I am operating a cluster of brokers. Each broker connects to its
neighbors as follows (configuration from one of them):
<networkConnectors>
<networkConnector name="1.connector.2"
uri="static:(tcp://192.168.7.106:3200)" />
<networkConnector name="1.connector.r1"
uri="static:(tcp://192.168.3.38:3300)" />
</networkConnectors>
I use a request/response pattern like this:
final Queue responseQueue = this.queueSession.createTemporaryQueue();
requestMessage.setJMSReplyTo(responseQueue);
requestMessage.setJMSExpiration(120000);
final MessageConsumer responseConsumer =
this.getQueueSession().createConsumer(responseQueue);
responseConsumer.setMessageListener(new MessageListener() {
/* … */
});
this.getProducer(queueName).send(requestMessage);
getProducer is a factory method. I cache producers for the same
queueName in a hashmap.
Anyways, what happens is this. There appears to be a round robin going
on, as I would expect. The broker that the client is connected to works
fine, but the other broker has these messages in the logs:
2013-04-03 17:21:15,467 WARN [ActiveMQ Task-24]
org.apache.activemq.broker.TransportConnection.serviceException(TransportConnection.java:271)
- Async error occurred: javax.jms.JMSException: The destination
temp-queue://ID:LJLLSC1N3-55367-1365024072577-1:1:134 does not exist.
5511 javax.jms.JMSException: The destination
temp-queue://ID:LJLLSC1N3-55367-1365024072577-1:1:134 does not exist.
I saw some discussion of this on StackOverflow at
http://stackoverflow.com/questions/6432672/activemq-how-to-handle-broker-failovers-while-using-temporary-queues
but that scenario doesn't apply to me.
The interesting thing is that when I run the client on my laptop,
everything works great. When I run the client on the server box -- I
start having issues.
--
Regards,
Oleg Dulin
NYC Java Big Data Engineer
http://www.olegdulin.com/