Tomcat

A servlet, which is set to be initialized on startup using Tomcat's
<load-on-startup>1</load-on-startup> in web.xml, initiates a singleton. That
singleton holds a CamelContext member.
This context is initialized exactly as described in my previous post, except
for the try/catch (this is simply because that the method in the singleton
that initializes the context declares throwing exception, which the servlet
catches).
There is no XML here.

CamelContext context = new DefaultCamelContext(); 
>                     
> String brokerUri =
> "failover:(tcp://localhost:61616)?maxReconnectAttempts=-1&initialReconnectDelay=10000";
>  
> ConnectionFactory connectionFactory = new
> ActiveMQConnectionFactory(brokerUri); 
> context.addComponent("jms",
> JmsComponent.jmsComponentAutoAcknowledge(connectionFactory)); 
> 
> context.addRoutes(new RouteBuilder() { 
>               
>               @Override 
>               public void configure() throws Exception 
>               { 
>                               from("jms:queueName") 
>                               .log("${body}"); 
>               } 
> }); 
> context.start(); 

Standalone - Spring Style

My main class initiates a org.apache.camel.spring.Main and sets its
camel-context.xml.
org.apache.camel.spring.Main.start() is called.
org.apache.camel.spring.Main.enableHangupSupport is NOT called.
The camel configuration is as described in my first post.

<bean id="jmsConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
>       <property name="brokerURL"
> value="failover:(tcp://localhost:61616)?maxReconnectAttempts=-1&initialReconnectDelay=10000"
> /> 
> </bean>
> <bean id="pooledConnectionFactory"
> class="org.apache.activemq.pool.PooledConnectionFactory">
>       <property name="maxConnections" value="8" />
>       <property name="maximumActive" value="500" />
>       <property name="connectionFactory" ref="jmsConnectionFactory" />
> </bean>
> <bean id="jmsConfig"
> class="org.apache.camel.component.jms.JmsConfiguration">
>       <property name="connectionFactory" ref="pooledConnectionFactory"/>
>       <property name="transacted" value="false"/>
>       <property name="concurrentConsumers" value="20"/>
> </bean>
> <bean id="activemq"
> class="org.apache.activemq.camel.component.ActiveMQComponent">
>       <property name="configuration" ref="jmsConfig"/>
> </bean>
> 
> <camel:camelContext id="camel"
> xmlns="http://camel.apache.org/schema/spring";>
>       <camel:route>
>               <camel:from uri="activemq:queue:queueName"/>
>               <camel:log message="${body}" />
>       </camel:route>
> </camel:camelContext>

Standalone - Java Style

In this solution my main class creates a new Thread T with an anonymous
Runnable, and calls T.start().
The runnable's run method is as described below.
There is no XML here.

CamelContext context = new DefaultCamelContext(); 
>                     
> String brokerUri =
> "failover:(tcp://localhost:61616)?maxReconnectAttempts=-1&initialReconnectDelay=10000";
>  
> ConnectionFactory connectionFactory = new
> ActiveMQConnectionFactory(brokerUri); 
> context.addComponent("jms",
> JmsComponent.jmsComponentAutoAcknowledge(connectionFactory)); 
> 
> try { 
>         context.addRoutes(new RouteBuilder() { 
>                 
>                 @Override 
>                 public void configure() throws Exception 
>                 { 
>                         from("jms:queueName") 
>                         .log("${body}"); 
>                 } 
>         }); 
>         context.start(); 
> } catch (Exception e) { 
>         e.printStackTrace(); 
> }

So we have 2 solutions with a standalone main, one with spring DSL and the
other with Java. In both, the application crashes upon ActiveMQ restart.
And we have one solution in a Tomcat container, using Java. Here the
application does not crash upon ActiveMQ restart, and a connection is
successfully established once the broker is up again.
In ALL of the solutions the application was able to *start before* the
broker, and later establish a connection once the broker has started (but
again, 2 of them did not stand during a broker shutdown).

thanks
SJ

--
View this message in context: 
http://camel.465427.n5.nabble.com/Camel-crashes-upon-ActiveMQ-shutdown-tp5534910p5537761.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to