我正在使用Apache ActiveMQ的JMS队列实现,它有大约300个消费者在nio-ssql配置后面的一个AMQ实例上侦听各个队列。
消费者1听Queue1
消费者2听Queue2
消费者3听Queue3
消费者4听Queue4
有一个生产者根据工作流将消息排队到这些队列。每个消费者都托管在不同的环境中,这些环境混合了Windows和Linux服务器,生产者托管在基于云的Linux环境中。
大多数消费者能够在代理上创建连接,crate队列,并且能够在没有任何问题的情况下从消息代理中对消息进行解除队列。
但是,某些消费者无法从队列中取消队列消息。有人可以帮忙解决这个问题并提出建议吗?
Please find below sample consumer code:
//Create a Connection
Connection connection = new ActiveMQConnectionFactory(brokerUrl).createConnection(username, password);
connection.setExceptionListener(this);
connection.start();
// Create a Session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Create the destination (Queue)
Destination destination = session.createQueue(SAMPLE_QUEUE_NAME);
// Create a MessageConsumer from the Session to the queue
consumer = session.createConsumer(destination);
while (true) {
if (Thread.interrupted()) {
EcwLog.AppendToLog(logPrefix + "terminating MQ connection");
terminateaMQConnection();
break;
}
Message message = consumer.receive();
processMessage(message);
}