当其他消费者正在处理消息时,ActiveMQ onmessage被阻止

时间:2014-11-10 12:36:12

标签: java jms activemq

我正在使用ActiveMQ 5.6。我有两个消费者。当一个消费者在onmessage方法上收到消息时,其他消费者没有收到消息。意味着我希望第二个消费者能够在计算第一个消息时收到第二个消息。 我尝试了很多东西,但没有任何工作......

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, url);
connectionFactory.setAlwaysSessionAsync(true);

connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Session session1 = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destinationQueue1 = session.createQueue(dataQ);
Destination destinationQueue2 = session1.createQueue(dataQ);
NormalListener listener = new NormalListener();
NormalListener listener2 = new NormalListener();
MessageConsumer consumerData1 = session.createConsumer(destinationQueue1);
consumerData1.setMessageListener(listner1);

MessageConsumer consumerData2 = session1.createConsumer(destinationQueue2);
consumerData2.setMessageListener(listener2);




public class NormalListener  implements MessageListener{
    @Override
    public void onMessage(Message message) {
        try {
            if (message instanceof TextMessage) {
                    TextMessage textMessage = (TextMessage) message;
                    String receivedMessage=textMessage.getText();
                    readMessage(message);
                    }
                }
            }
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

代码创建两个会话 - 会话和会话1 - 并且仅使用第一个会话(会话)来创建消费者。

尝试使用第一个会话创建第一个使用者,使用第二个会话创建第二个使用者。我也会使用session1和session2:

来使用一致的命名
MessageConsumer consumerData1 = session1.createConsumer(destinationQueue1);
consumerData1.setMessageListener(listner1);

MessageConsumer consumerData2 = session2.createConsumer(destinationQueue2);
consumerData2.setMessageListener(listener2);

NormalListener不是标准的JMS类/接口。你可以试试一个普通的MessageListener吗?

此外,您没有在消息侦听器的onMessage()方法中显示代码。您是否检查过潜在的线程问题,并将其代码减少到最低程度以进行测试?

另请参阅:http://activemq.apache.org/multiple-consumers-on-a-queue.html

相关问题