我正在尝试在 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 条),但随后就会锁定。有人建议我消息中的某些字符可能是转义字符(我使用的是不同长度的随机字符串,因为这只是一个性能测试,实际上并未发送任何内容)所以我更改了所有消息到同一个字符串,这是 char '2' 的重复,仍然没有运气。我正在使用 Spring 配置来加载访问 ActiveMQ 队列所需的所有组件,并且该队列在我的本地主机上运行。