You can define a simple route to leverage all the camel error handler feature 
or failover feature by using the direct endpoint just like this.

from(“direct:start”).to(“activemq:xxx")

--  
Willem Jiang

Red Hat, Inc.
Web: http://www.redhat.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.iteye.com (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem



On December 12, 2014 at 1:45:17 AM, mpower (d...@prodigiorts.com) wrote:
> Hopefully this is the correct place for this post, not sure if it should be
> under Camel or ActiveMQ. Searching has not given a clear answer to our
> problem.
>  
> Our exception involves a server invoking ProducerTemplate.sendBody() to send
> a message to ActiveMQ on another server that is down. We want to handle
> this error gracefully with retry logic allowing time for the server to be
> started.
>  
> We have tried many variations on the following with no success.
> Using Camel errorHandler and onException globally have not been triggered,
> and onException within a specific Camel route definition has not been
> triggered. Also attempted jms.redeliveryPolicy properties on the
> ActiveMQComponent bean brokerURL with no effect.
>  
> Using a try/catch block around the ProducerTemplate.sendBody() call in the
> java code was the only place where we were able to catch this error, but we
> would prefer to configure the error handling in the xml with the route or
> bean configuration.
>  
> Can we use the error handling configuration in the xml to deal with this or
> must it be handled in the java code? If we can use the xml is there a good
> example of this somewhere?
>  
> Thanks!
>  
> Stack trace below:
>  
> 12-11 11:33:24.009 [ null_THREAD] ThreadController
> ERROR run: controllerName=null_THREAD
> org.apache.camel.CamelExecutionException: Exception occurred during
> execution on the exchange: Exchange[...]
> at
> org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1368)
>   
> at
> org.apache.camel.util.ExchangeHelper.extractResultBody(ExchangeHelper.java:622)
>   
> at
> org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:467)
>   
> at
> org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:463)
>   
> at
> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:139)
>   
> at
> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:144)
>   
> at
> com.mpower.pro.as.eventcontroller.DeployedStrategyEventController.sendDeployedStrategy(DeployedStrategyEventController.java:94)
>   
> at
> com.mpower.pro.as.eventcontroller.DeployedStrategyEventController.run(DeployedStrategyEventController.java:173)
>   
> at
> com.mpower.pro.core.controller.ThreadController.run(ThreadController.java:157)
>   
> at java.lang.Thread.run(Thread.java:745)
> Caused by: org.springframework.jms.UncategorizedJmsException: Uncategorized  
> exception occured during JMS processing; nested exception is
> javax.jms.JMSException: Error while attempting to add new Connection to the
> pool; nested exception is javax.jms.JMSException: Could not connect to
> broker URL: tcp://localhost:8882. Reason: java.net.ConnectException:
> Connection refused: connect
> at
> org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:316)
>   
> at
> org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:169)
>   
> at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:496)  
> at
> org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:228)
> at org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:421)  
> at
> org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:375)
>   
> at org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:151)  
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>   
> at
> org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:73)
>   
> at
> org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:378)  
> at
> org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:346)  
> at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:242)  
> at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:346)  
> at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:184)
> at
> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124)
>   
> at
> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:137)
>   
> ... 5 more
> Caused by: javax.jms.JMSException: Error while attempting to add new
> Connection to the pool
> at
> org.apache.activemq.jms.pool.PooledConnectionFactory.createJmsException(PooledConnectionFactory.java:243)
>   
> at
> org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:198)
>   
> at
> org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:177)
>   
> at
> org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:180)
>   
> at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:483)  
> ... 18 more
> Caused by: javax.jms.JMSException: Could not connect to broker URL:
> tcp://localhost:8882. Reason: java.net.ConnectException: Connection refused:  
> connect
> at
> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:36)
>   
> at
> org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:358)
>   
> at
> org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:303)
>   
> at
> org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:243)
>   
> at
> org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:251)
>   
> at
> org.apache.activemq.jms.pool.PooledConnectionFactory$1.makeObject(PooledConnectionFactory.java:98)
>   
> at
> org.apache.activemq.jms.pool.PooledConnectionFactory$1.makeObject(PooledConnectionFactory.java:78)
>   
> at
> org.apache.commons.pool.impl.GenericKeyedObjectPool.addObject(GenericKeyedObjectPool.java:1668)
>   
> at
> org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:196)
>   
> ... 21 more
> Caused by: java.net.ConnectException: Connection refused: connect
> at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
> at
> java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
>   
> at
> java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)  
> at
> java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
>   
> at
> java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)  
> at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
> at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
> at java.net.Socket.connect(Socket.java:579)
> at
> org.apache.activemq.transport.tcp.TcpTransport.connect(TcpTransport.java:501) 
>  
> at
> org.apache.activemq.transport.tcp.TcpTransport.doStart(TcpTransport.java:464) 
>  
> at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55)  
> at
> org.apache.activemq.transport.AbstractInactivityMonitor.start(AbstractInactivityMonitor.java:138)
>   
> at
> org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)  
> at
> org.apache.activemq.transport.WireFormatNegotiator.start(WireFormatNegotiator.java:72)
>   
> at
> org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)  
> at
> org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)  
> at
> org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:338)
>   
> ... 28 more
>  
>  
>  
>  
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/How-to-handle-CamelExecutionException-for-ActiveMQ-tp5760589.html
>   
> Sent from the Camel Development mailing list archive at Nabble.com.
>  

Reply via email to