我试图在ActiveMQ上实现性能测试,因此设置了基本的生产者和使用者来通过队列发送和接收消息。我创建了一个制片人,没有任何问题,得到它写的消息队列特定号码:Java ActiveMQ客户端无法接收消息
for(int i = 0; i < numberOfMessages; i++){
try{
String message = generateText(sizeOfMessage);
produceMessage(message);
}
catch (Exception e) {
logger.error("Caught exception while sending message", e);
}
}
这仍然没有问题完成,我已经与管理网站上的检查,这证实了这一点正在等待的消息数量。
当我尝试从队列中接收消息时,会发生此问题。使用简单的使用者从队列中读取数据,它将从队列中读取各种数量的消息,但在尝试接收其中一条消息时会停止。我可以看到队列中还有消息要读取,但客户端不会传递其中一条消息。 我用一个简单的方法来接收消息:
Message message = jmsTemplate.receive();
,它适用于一些消息(约20-30),但是只是锁定。有人向我建议,消息中的一些字符可能是一个转义字符(我使用的是随机字符串,因为这只是一个性能测试,而不是实际发送任何内容),所以我更改了所有消息到相同的字符串,这是字符'2'的重复,仍然没有运气。 我使用Spring配置来加载访问ActiveMQ队列所需的所有组件,并且队列在本地主机上运行。