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/ >