activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brook, James" <jbr...@upcbroadband.com>
Subject Producer blocks when trying to send async JMS messages to failed broker
Date Mon, 16 Apr 2012 18:52:28 GMT
I am trying to make sure my application is resilient. It sends JMS messages to a remote ActiveMQ
broker. Unfortunately when that broker goes down the client starts to block even though I
am using the Camel asyncSendBody method. See below for the stack trace.

The ActiveMQ version is 5.3.0 although I have the same problem with the most recent stable
release.

This is the argument I give to the asyncSendBody method:

    jms:queue:myQueue?jmsMessageType=Text&timeToLive=5000

My connection factory uses this URL:

    failover:(tcp://my.ip:61613,tcp://my:ip:61613)?useExponentialBackOff=true&randomize=false&timeout=1000

As the broker starts to fail I see lots of the following errors in the log:

    org.apache.camel.processor.UnitOfWorkProcessor  - Caught unhandled exception while processing
ExchangeId: ID-james-upcit-ds-upc-biz-64404-1334601186430-0-38
IOException: Failover timeout of 1000 ms reached

   org.apache.activemq.transport.failover.FailoverTransport  - Failover timed out after 29998ms

Then after attempting to send quite a few more messages the blocking starts. I can't go live
with my application in this state and I really don't want to put another queue in place to
decouple the JMS producer. Is there something I am doing wrong? If the broker is down I am
quite happy for these messages to be lost - they lose their meaning if not delivered immediately.

Thanks
James

at java.lang.Object.wait(Native Method)
	at org.apache.activemq.transport.failover.FailoverTransport.oneway(FailoverTransport.java:433)
	at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
	at org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:74)
	at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:79)
	at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1244)
	at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1350)
	at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:300)
	at org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:196)
	at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:457)
	at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:185)
	at org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:359)
	at org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:313)
	at org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:111)
	at org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
	at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
	at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99)
	at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86)
	at org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:63)
	at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:352)
	at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:324)
	at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:223)
	at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:324)
	at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:169)
	at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:111)
	at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:124)
	at org.apache.camel.impl.DefaultProducerTemplate$14.call(DefaultProducerTemplate.java:596)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.rejectedExecution(ThreadPoolExecutor.java:1746)
	at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:92)
	at org.apache.camel.impl.DefaultProducerTemplate.asyncSendBody(DefaultProducerTemplate.java:601)
	at org.apache.camel.impl.DefaultProducerTemplate.asyncSendBody(DefaultProducerTemplate.java:458)
Mime
View raw message