Your exception seems to indicate that you haven't configured your ActiveMQConnectionFactory correctly. What the error shows is that you have connected it to:
tcp://10.0.0.97:61616 What will happen in that configuration is that when the connection drops, the connection factory will remain in a disconnected state (and you will need to restart the process to get it working again - no good). What you need to use is the failover transport (http://activemq.apache.org/failover-transport-reference.html) in your broker URL: failover:(tcp://10.0.0.97:61616) Jakub On 09/02/15 16:19, James Green wrote: > I have removed all transaction handling both from the route and from the > ActiveMQ connection factory. I still see: > > 09/Feb/2015 15:58:40,159- DefaultErrorHandler: Failed delivery for > (MessageId: ID-ngw-smtp-01-50108-1423497456378-0-7 on ExchangeId: > ID-ngw-smtp-01-501 > 08-1423497456378-0-11). On delivery attempt: 0 caught: > org.springframework.jms.UncategorizedJmsException: Uncategorized exception > occured during JMS pr > ocessing; nested exception is javax.jms.JMSException: Cannot send, channel > has already failed: tcp://10.0.0.97:61616 > 09/Feb/2015 15:58:40,159- DefaultErrorHandler: Failed delivery for > (MessageId: ID-ngw-smtp-01-50108-1423497456378-0-7 on ExchangeId: > ID-ngw-smtp-01-501 > 08-1423497456378-0-10). On delivery attempt: 0 caught: > org.springframework.jms.UncategorizedJmsException: Uncategorized exception > occured during JMS pr > ocessing; nested exception is javax.jms.JMSException: Cannot send, channel > has already failed: tcp://10.0.0.97:61616 > 09/Feb/2015 15:58:40,167- DefaultErrorHandler: Failed delivery for > (MessageId: ID-ngw-smtp-01-50108-1423497456378-0-7 on ExchangeId: > ID-ngw-smtp-01-501 > 08-1423497456378-0-10). Exhausted after delivery attempt: 1 caught: > org.springframework.jms.UncategorizedJmsException: Uncategorized exception > occured > during JMS processing; nested exception is javax.jms.JMSException: Cannot > send, channel has already failed: tcp://10.0.0.97:61616 > > Stacktrace > --------------------------------------------------------------------------------------------------------------------------------------- > org.springframework.jms.UncategorizedJmsException: Uncategorized exception > occured during JMS processing; nested exception is javax.jms.JMSException: C > annot send, channel has already failed: tcp://10.0.0.97:61616 > at > org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:316) > ~[ngw-smtp-receiver.jar:?] > at > org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:168) > ~[ngw-smtp-receiver.jar:?] > at > org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:469) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:228) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:431) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:385) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:153) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.camel.processor.SendProcessor.process(SendProcessor.java:120) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416) > [ngw-smtp-receiver.jar:?] > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) > [ngw-smtp-receiver.jar:?] > at org.apache.camel.processor.Pipeline.process(Pipeline.java:118) > [ngw-smtp-receiver.jar:?] > at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) > [ngw-smtp-receiver.jar:?] > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) > [ngw-smtp-receiver.jar:?] > at > org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51) > [ngw-smtp-receiver.jar:?] > at > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416) > [ngw-smtp-receiver.jar:?] > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) > [ngw-smtp-receiver.jar:?] > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:105) > [ngw-smtp-receiver.jar:?] > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:87) > [ngw-smtp-receiver.jar:?] > at > org.apache.camel.processor.WireTapProcessor$1.call(WireTapProcessor.java:98) > [ngw-smtp-receiver.jar:?] > at > org.apache.camel.processor.WireTapProcessor$1.call(WireTapProcessor.java:94) > [ngw-smtp-receiver.jar:?] > at java.util.concurrent.FutureTask.run(FutureTask.java:262) > [?:1.7.0_75] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > [?:1.7.0_75] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > [?:1.7.0_75] > at java.lang.Thread.run(Thread.java:745) [?:1.7.0_75] > Caused by: javax.jms.JMSException: Cannot send, channel has already failed: > tcp://10.0.0.97:61616 > at > org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:72) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1435) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1522) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:328) > ~[ngw-smtp-receiver.jar:?] > at > org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:196) > ~[ngw-smtp-receiver.jar:?] > at > org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:457) > ~[ngw-smtp-receiver.jar:?] > ... 22 more > Caused by: org.apache.activemq.transport.InactivityIOException: Cannot > send, channel has already failed: tcp://10.0.0.97:61616 > at > org.apache.activemq.transport.AbstractInactivityMonitor.doOnewaySend(AbstractInactivityMonitor.java:297) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.activemq.transport.AbstractInactivityMonitor.oneway(AbstractInactivityMonitor.java:286) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:85) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:104) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1406) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1522) > ~[ngw-smtp-receiver.jar:?] > at > org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:328) > ~[ngw-smtp-receiver.jar:?] > at > org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:196) > ~[ngw-smtp-receiver.jar:?] > at > org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:457) > ~[ngw-smtp-receiver.jar:?] > ... 22 more > > 09/Feb/2015 15:58:40,168- Pipeline: Message exchange has failed: so > breaking out of pipeline for exchange: Exchange[Message: [Body is instance > of org.apache.camel.StreamCache]] Exception: > org.springframework.jms.UncategorizedJmsException: Uncategorized exception > occured during JMS processing; nested exception is javax.jms.JMSException: > Cannot send, channel has already failed: tcp://10.0.0.97:61616 > 09/Feb/2015 15:58:40,167- DefaultErrorHandler: Failed delivery for > (MessageId: ID-ngw-smtp-01-50108-1423497456378-0-7 on ExchangeId: > ID-ngw-smtp-01-50108-1423497456378-0-11). Exhausted after delivery attempt: > 1 caught: org.springframework.jms.UncategorizedJmsException: Uncategorized > exception occured during JMS processing; nested exception is > javax.jms.JMSException: Cannot send, channel has already failed: tcp:// > 10.0.0.97:61616 > > My route looks like this: > > rest("/from-smtp/") > .post() > .type(EmailedSmsRequest.class) > .to("direct:fromSmtp"); > > Eventually this turns into: > .setExchangePattern(ExchangePattern.InOnly) > .to("direct:router") > .setExchangePattern(ExchangePattern.InOut) > > Where the direct:router route sends the JMS message. > > The remaining route sets the body to the response I want the http client to > receive. > > No blindingly obvious faults can you see? > > Thanks, > > James > > > On 9 February 2015 at 15:39, Claus Ibsen <claus.ib...@gmail.com> wrote: > >> Hi >> >> If you use ActiveMQ you may need to turn off asyncSend >> http://activemq.apache.org/async-sends.html >> >> On Mon, Feb 9, 2015 at 4:20 PM, James Green <james.mk.gr...@gmail.com> >> wrote: >>> We have a route from a REST endpoint into a JMS (InOnly) endpoint. >>> >>> We took down the broker to see what would happen. Turns out HTTP clients >>> hang waiting for a response (for several minutes) while a load of stack >>> traces are logged by Camel: >>> >>> 09/Feb/2015 15:07:52,677- DefaultErrorHandler: Failed delivery for >>> (MessageId: ID-ngw-smtp-01-56823-1423494454408-0-1 on ExchangeId: >>> ID-ngw-smtp-01-56823-1423494454408-0-5). On delivery attempt: 0 caught: >>> org.springframework.jms.UncategorizedJmsException: Uncategorized >> exception >>> occured during JMS processing; nested exception is >> javax.jms.JMSException: >>> Cannot send, channel has already failed: tcp://10.0.0.97:61616 >>> 09/Feb/2015 15:07:52,677- DefaultErrorHandler: Failed delivery for >>> (MessageId: ID-ngw-smtp-01-56823-1423494454408-0-1 on ExchangeId: >>> ID-ngw-smtp-01-56823-1423494454408-0-4). On delivery attempt: 0 caught: >>> org.springframework.jms.UncategorizedJmsException: Uncategorized >> exception >>> occured during JMS processing; nested exception is >> javax.jms.JMSException: >>> Cannot send, channel has already failed: tcp://10.0.0.97:61616 >>> 09/Feb/2015 15:07:52,684- DefaultErrorHandler: Failed delivery for >>> (MessageId: ID-ngw-smtp-01-56823-1423494454408-0-1 on ExchangeId: >>> ID-ngw-smtp-01-56823-1423494454408-0-4). Exhausted after delivery >> attempt: >>> 1 caught: org.springframework.jms.UncategorizedJmsException: >> Uncategorized >>> exception occured during JMS processing; nested exception is >>> javax.jms.JMSException: Cannot send, channel has already failed: tcp:// >>> 10.0.0.97:61616 >>> >>> 09/Feb/2015 15:07:52,689- TransactionErrorHandler: Transaction rollback >>> (0x5d16d955) redelivered(unknown) for (MessageId: >>> ID-ngw-smtp-01-56823-14234944 >>> 54408-0-1 on ExchangeId: ID-ngw-smtp-01-56823-1423494454408-0-5) caught: >>> org.springframework.jms.UncategorizedJmsException: Uncategorized >> exception >>> occ >>> ured during JMS processing; nested exception is javax.jms.JMSException: >>> Cannot send, channel has already failed: tcp://10.0.0.97:61616 >>> 09/Feb/2015 15:07:52,689- MulticastProcessor: Message exchange has >> failed: >>> Sequential processing failed for number 0 for exchange: >> Exchange[Message: [B >>> ody is instance of org.apache.camel.StreamCache]] Exception: >>> org.apache.camel.RuntimeCamelException: >>> org.springframework.jms.UncategorizedJmsException: >>> Uncategorized exception occured during JMS processing; nested exception >> is >>> javax.jms.JMSException: Cannot send, channel has already failed: >> tcp://10.0 >>> .0.97:61616 >>> 09/Feb/2015 15:07:52,689- MulticastProcessor: Done sequential processing >> 1 >>> exchanges >>> 09/Feb/2015 15:07:52,689- Pipeline: Message exchange has failed: so >>> breaking out of pipeline for exchange: Exchange[Message: [Body is >> instance >>> of org.a >>> pache.camel.StreamCache]] Exception: >>> org.apache.camel.RuntimeCamelException: >>> org.springframework.jms.UncategorizedJmsException: Uncategorized >> exception >>> occured during JMS processing; nested exception is >> javax.jms.JMSException: >>> Cannot send, channel has already failed: tcp://10.0.0.97:61616 >>> 09/Feb/2015 15:07:52,689- Pipeline: Message exchange has failed: so >>> breaking out of pipeline for exchange: Exchange[Message: [Body is >> instance >>> of org.a >>> pache.camel.StreamCache]] Exception: >>> org.apache.camel.RuntimeCamelException: >>> org.springframework.jms.UncategorizedJmsException: Uncategorized >> exception >>> occured during JMS processing; nested exception is >> javax.jms.JMSException: >>> Cannot send, channel has already failed: tcp://10.0.0.97:61616 >>> 09/Feb/2015 15:07:52,690- TransactionErrorHandler: Transaction rollback >>> (0x5d16d955) redelivered(unknown) for (MessageId: >>> ID-ngw-smtp-01-56823-1423494454408-0-1 on ExchangeId: >>> ID-ngw-smtp-01-56823-1423494454408-0-2) caught: >>> org.springframework.jms.UncategorizedJmsException: Uncategorized >> exception >>> occured during JMS processing; nested exception is >> javax.jms.JMSException: >>> Cannot send, channel has already failed: tcp://10.0.0.97:61616 >>> >>> We have plugged on some onException clauses but none appear to execute: >>> >>> onException(javax.jms.JMSException.class, Exception.class, >>> RuntimeException.class) >>> .log(LoggingLevel.ERROR, logger, "Exception!") >>> .handled(true) >>> .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(500)) >>> .setBody().constant("Something bad happened"); >>> >>> Can someone advice on what I'm missing? What we want is to respond with a >>> 500 HTTP code but catching JMSException appears not be working. >>> >>> Thanks, >>> >>> James >> >> >> -- >> Claus Ibsen >> ----------------- >> Red Hat, Inc. >> Email: cib...@redhat.com >> Twitter: davsclaus >> Blog: http://davsclaus.com >> Author of Camel in Action: http://www.manning.com/ibsen >> hawtio: http://hawt.io/ >> fabric8: http://fabric8.io/ >>