I don't think the situation can be avoided – if anything, it can be
contained via AMQ broker configuration.

Take a look at [1]. Should be a similar situation.

[1]
http://stackoverflow.com/questions/6432672/activemq-how-to-handle-broker-failovers-while-using-temporary-queues

Regards,

*Raúl Kripalani*
Apache Camel PMC Member & Committer | Enterprise Architect, Open Source
Integration specialist
http://about.me/raulkripalani | http://www.linkedin.com/in/raulkripalani
http://blog.raulkr.net | twitter: @raulvk

On Fri, Nov 8, 2013 at 11:54 AM, Harald Wellmann <hwellmann...@gmail.com>wrote:

> That might help in some cases, but I don't see how it solves the problem,
> when the producer dies before the message TTL is over.
>
> Regards,
> Harald
>
>
> 2013/11/8 Raul Kripalani <r...@evosent.com>
>
> > If these are request-reply interactions, producers should set a Time To
> > Live when sending a message to the queue. The broker will then expire
> stale
> > messages automatically and they won't be delivered to the consumer, thus
> > reducing the risk of the consumer sending out unexpected replies like
> this
> > one.
> >
> > Regards,
> >
> > *Raúl Kripalani*
> > Apache Camel PMC Member & Committer | Enterprise Architect, Open Source
> > Integration specialist
> > http://about.me/raulkripalani | http://www.linkedin.com/in/raulkripalani
> > http://blog.raulkr.net | twitter: @raulvk
> >
> >
> > On Fri, Nov 8, 2013 at 11:17 AM, Harald Wellmann <hwellmann...@gmail.com
> > >wrote:
> >
> > > I'm using Camel 2.12.1 with SJMS on JBoss AS 7.2.0 with the ActiveMQ
> > 5.7.0
> > > resource adapter and an external broker.
> > >
> > > My application has a route consuming request-reply messages from an
> > > ActiveMQ queue via SJMS. The connection factory is obtained from JBoss
> > via
> > > @Resource injection.
> > >
> > > When I stop my application, other producers may continue sending
> messages
> > > to the queue.
> > >
> > > When I restart my application, the producers and their associated
> > temporary
> > > reply queues may be gone.
> > >
> > > Now the restarted application connects to the queue,  processes a
> message
> > > and fails sending a reply to stale temp queue, resulting in an
> exception
> > > (see below) - as a result, the ActiveMQ connection is closed, and in
> the
> > > debugger I can see that all ActiveMQ worker threads are terminated.
> > >
> > > When producers send new messages (this time with active reply queues),
> > > nothing happens. SJMS/ActiveMQ does not reconnect.
> > >
> > > Everything works fine when replacing camel-sjms by camel-jms.
> > >
> > > Is this a configuration issue, or a problem in SJMS? Any hints
> welcome...
> > >
> > > Best regards,
> > > Harald
> > >
> > > ----
> > >
> > > 11:48:45,506 WARN
> > > [org.jboss.jca.core.connectionmanager.listener.TxConnectionListener]
> > > (ActiveMQ Connection Executor: tcp://localhost/127.0.0.1:61616@49905)
> > > IJ000305: Connection error occured:
> > >
> >
> org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@2bc948fb
> > > [state=NORMAL
> > > managed
> > >
> >
> connection=org.apache.activemq.ra.ActiveMQManagedConnection@29d997e5connection
> > > handles=1 lastUse=1383907703668 trackByTx=false
> > >
> >
> pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@c8350dapool
> > > internal context=SemaphoreArrayListManagedConnectionPool@1311ea1
> > > [pool=ConnectionFactory]
> > > xaResource=LocalXAResourceImpl@3fd1dca3[connectionListener=2bc948fb
> > > connectionManager=6aec7210 warned=false currentXid=null
> > > productName=ActiveMQ productVersion=5.7.0
> > > jndiName=java:jboss/exported/jms/ConnectionFactory] txSync=null]:
> > > javax.jms.JMSException: The destination
> > > temp-queue://ID:tehh2d002-51935-1383907217133-1:2:2 does not exist.
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.region.AbstractRegion.addDestination(AbstractRegion.java:149)
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.region.RegionBroker.addDestination(RegionBroker.java:289)
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145)
> > >     at
> > >
> > >
> >
> org.apache.activemq.advisory.AdvisoryBroker.addDestination(AdvisoryBroker.java:175)
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145)
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145)
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.MutableBrokerFilter.addDestination(MutableBrokerFilter.java:151)
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.region.RegionBroker.addProducer(RegionBroker.java:361)
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.jmx.ManagedRegionBroker.addProducer(ManagedRegionBroker.java:281)
> > >     at
> > >
> org.apache.activemq.broker.BrokerFilter.addProducer(BrokerFilter.java:93)
> > >     at
> > >
> > >
> >
> org.apache.activemq.advisory.AdvisoryBroker.addProducer(AdvisoryBroker.java:163)
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.CompositeDestinationBroker.addProducer(CompositeDestinationBroker.java:56)
> > >     at
> > >
> org.apache.activemq.broker.BrokerFilter.addProducer(BrokerFilter.java:93)
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.MutableBrokerFilter.addProducer(MutableBrokerFilter.java:99)
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.TransportConnection.processAddProducer(TransportConnection.java:511)
> > >     at
> > > org.apache.activemq.command.ProducerInfo.visit(ProducerInfo.java:105)
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:294)
> > >     at
> > >
> > >
> >
> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:152)
> > >     at
> > >
> > >
> >
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
> > >     at
> > >
> > >
> >
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
> > >     at
> > >
> > >
> >
> org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:256)
> > >     at
> > >
> > >
> >
> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
> > >     at
> > >
> >
> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:222)
> > >     at
> > >
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:204)
> > >     at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
> > >
> >
>

Reply via email to