On Thu, Dec 1, 2011 at 8:01 PM, Claus Ibsen <claus.ib...@gmail.com> wrote: > On Thu, Dec 1, 2011 at 10:08 AM, Jason Dillon <ja...@planet57.com> wrote: >> This does not really help, as if you set the retry on startup and it exceeds >> an exception is thrown and the route does not get added. >> >> I need to route to be added regardless if it can actually make a connection >> at the time of adding or not. The connectivity to the jms endpoint may or >> may not be available when the route is added, but either way the route needs >> to get added, so that when the connectivity is available that messages will >> flow. >> > > We should possible add an option to JmsConsumer so you can instruct it > to startup using a spawned thread, so the route can continue to be > started. And as you say the startup process may successfully connect > later. This depends if the JMS Client supports automatic failover and > re-connect attempts as the AMQ client does in this case. > > Fell free to create a JIRA ticket. >
I have created a ticket to track this https://issues.apache.org/jira/browse/CAMEL-4770 > >> --jason >> >> >> On Nov 30, 2011, at 11:02 PM, Claus Ibsen wrote: >> >>> AMQ have a startup max reconnect attempt option you can use >>> http://activemq.apache.org/failover-transport-reference.html >>> >>> >>> On Thu, Dec 1, 2011 at 12:01 AM, Jason Dillon <ja...@planet57.com> wrote: >>>> I'm running into a problem where CamelContext.addRoutes() is blocking when >>>> adding a route that uses a jms endpoint that is configured with AcitveMQ's >>>> failover transport and the remote server is down. >>>> >>>> This specific jms endpoint is configured to use SingleConnectionFactory >>>> and ConsumerType.Simple to reduce thread usage. Looks like when the >>>> consumer is started, that it attempts to open up the connection: >>>> >>>> <snip> >>>> jvm 1 | java.lang.Thread.State: TIMED_WAITING (on object monitor) >>>> jvm 1 | at java.lang.Object.wait(Native Method) >>>> jvm 1 | - waiting on <7cbecd168> (a java.lang.Object) >>>> jvm 1 | at >>>> org.apache.activemq.transport.failover.FailoverTransport.oneway(FailoverTransport.java:516) >>>> jvm 1 | - locked <7cbecd168> (a java.lang.Object) >>>> jvm 1 | at >>>> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40) >>>> jvm 1 | - locked <7cbecd1b8> (a java.lang.Object) >>>> jvm 1 | at >>>> org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81) >>>> jvm 1 | at >>>> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86) >>>> jvm 1 | at >>>> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1284) >>>> jvm 1 | at >>>> org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1392) >>>> jvm 1 | - locked <7cbecd340> (a java.lang.Object) >>>> jvm 1 | at >>>> org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:309) >>>> jvm 1 | at >>>> org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:196) >>>> jvm 1 | at >>>> org.springframework.jms.listener.SimpleMessageListenerContainer.initializeConsumers(SimpleMessageListenerContainer.java:249) >>>> jvm 1 | - locked <7cbecd3d0> (a java.lang.Object) >>>> jvm 1 | at >>>> org.springframework.jms.listener.SimpleMessageListenerContainer.doInitialize(SimpleMessageListenerContainer.java:188) >>>> jvm 1 | at >>>> org.springframework.jms.listener.AbstractJmsListeningContainer.initialize(AbstractJmsListeningContainer.java:193) >>>> jvm 1 | at >>>> org.springframework.jms.listener.AbstractJmsListeningContainer.afterPropertiesSet(AbstractJmsListeningContainer.java:157) >>>> jvm 1 | at >>>> org.apache.camel.component.jms.JmsConsumer.doStart(JmsConsumer.java:114) >>>> ... >>>> </snip> >>>> >>>> And failover does its job and loops forever trying to establish. This >>>> block camel from starting up fully. Is this a bug or am I misconfiguring >>>> something? Once server is up, it behaves itself and returns as expected. >>>> >>>> Any suggestions on how to work around this? I'd rather not make a new >>>> thread simply to add the route (or add not-autostart) and thread the call >>>> to start the route, but... I don't see any other way to cope with this ATM. >>>> >>>> --jason >>> >>> >>> >>> -- >>> Claus Ibsen >>> ----------------- >>> FuseSource >>> Email: cib...@fusesource.com >>> Web: http://fusesource.com >>> Twitter: davsclaus, fusenews >>> Blog: http://davsclaus.blogspot.com/ >>> Author of Camel in Action: http://www.manning.com/ibsen/ >> > > > > -- > Claus Ibsen > ----------------- > FuseSource > Email: cib...@fusesource.com > Web: http://fusesource.com > Twitter: davsclaus, fusenews > Blog: http://davsclaus.blogspot.com/ > Author of Camel in Action: http://www.manning.com/ibsen/ -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com Twitter: davsclaus, fusenews Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/