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/


Reply via email to