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

Reply via email to