camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Lazy init for JMS-Component
Date Mon, 20 Jul 2015 19:44:02 GMT
Hi

Are your Camel route starting from JMS, or sending to JMS?
If its the latter, you can use a <recipientList> instead of <to> then
the uri is dynamic computed on-demand and you should be able to
startup jms.

Also some of the async options such as asyncStartListener may help.
And setting autoStartup=false etc

On Mon, Jul 20, 2015 at 4:52 PM, jpeschke <peschke@etone.de> wrote:
> Hi all,
> I have a problem with the lazy initialisation of a JMS component:
>
> I have the following Spring configuration (JMS connection factory will be
> looked up via JNDI):
>
>         <bean class="org.apache.camel.component.jms.JmsComponent" id="queue">
>             <property name="connectionFactory" ref="jmsQueueConnectionFactory" />
>         </bean>
>
>         <bean class="org.springframework.jndi.JndiObjectFactoryBean"
> id="jmsQueueConnectionFactory" >
>              <property name="jndiTemplate" ref="jndiTemplate" />
>              <property name="jndiName" value="${connectionFactoryName}" />
>         </bean>
>         ...
>
> This works fine so far. The only problem is that this will try to setup the
> JMS connection right at startup. What I want is a solution that starts the
> whole JMS thing at the moment a camel endpoint is created that needs it but
> not before this moment (I need this for integration tests where the
> JMS-endpoints are replaced by file endpoints because the test systems do not
> nessecarily have access to the JMS broker)
>
> So I configured all the beans to "lazy-init=true" and told the
> JNDIObjectFatcory bean to be looked up NOT at startup:
>
>         <bean class="org.springframework.jndi.JndiObjectFactoryBean"
> id="jmsQueueConnectionFactory" lazy-init="true">
>              <property name="jndiTemplate" ref="jndiTemplate" />
>              <property name="lookupOnStartup" value="false" />
>              <property name="jndiName" value="${connectionFactoryName}" />
>         </bean>
>
> This works, but as soon as I setup a Camel route using my "queue" bean, I
> get errors because the camel JMS endpoint cannot find it, so it does not set
> up the JMS connection "on demand", as I would have expected.
>
> Any ideas how to do this right?
>
> Thanks for any ideas.
>
> Best regards,
> Joerg
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Lazy-init-for-JMS-Component-tp5769586.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2nd edition: http://www.manning.com/ibsen2

Mime
View raw message