我有这个问题,我想知道我的兔子工作得很好。我不会发送消息,所以,我不是100%肯定是正确发送的。但问题是这样的。在所有配置和所有....我在RabbitMQ网站管理器上看到
当我应该发送一条消息时,我在“消息率”图表上看到活动,但在“排队的消息”上什么都没有。坦率地说,我不知道发生了什么事,是不是太快了,不需要排队的消息?或什么是错误的配置?知道其中的区别吗?
xdyibdwo1#
如果RabbitMQ接收到不可路由的消息,它会丢弃该消息。因此,当消息被接收时,它不会排队。您可以配置Alternate Exchanges以捕获此类消息。
mv1qrgav2#
就我而言,
当rabbitTemplate.convertAndSend中的Exchange未正确设置时--消息未发送到正确的队列--Queued messages始终为空。然而,Message rates不是零,它确实显示有消息被发送。这与另一个答案的意思相对应:如果RabbitMQ接收到不可路由的消息,则丢弃该消息。
rabbitTemplate.convertAndSend
Exchange
Queued messages
Message rates
当我的rabbitTemplate.convertAndSend中的Exchange确实设置正确时--消息被发送到正确的队列--Queued messages正在排队该消息。一切都很好。
(接情形2)现在,我打开receiver service,其中包含@RabbitListener。Queued messages立即下降到0,并且不会再上升。但是消息的传输仍然工作正常。
receiver service
@RabbitListener
(接情形2)现在,我将receiver service更改为使用rabbitTemplate.receiveAndConvert。我手动receive通过使用循环每隔2秒从queue接收消息。
rabbitTemplate.receiveAndConvert
receive
queue
sent
sender service
现在Queued messages保持不变-一条直线
1
我怀疑,当消息消耗得太快时,Queued messages只会显示0。
这与OP所说的一致:不需要对消息进行排队是不是太快了?(or,我可能会搞砸RabbitMQ中的一些设置,导致错误的结论。我不这么认为,但idk,我不熟悉RabbitMQ。)
2条答案
按热度按时间xdyibdwo1#
如果RabbitMQ接收到不可路由的消息,它会丢弃该消息。因此,当消息被接收时,它不会排队。
您可以配置Alternate Exchanges以捕获此类消息。
mv1qrgav2#
就我而言,
情况1:
当
rabbitTemplate.convertAndSend
中的Exchange
未正确设置时--消息未发送到正确的队列--Queued messages
始终为空。然而,
Message rates
不是零,它确实显示有消息被发送。这与另一个答案的意思相对应:
如果RabbitMQ接收到不可路由的消息,则丢弃该消息。
情况2:
当我的
rabbitTemplate.convertAndSend
中的Exchange
确实设置正确时--消息被发送到正确的队列--Queued messages
正在排队该消息。一切都很好。
情况3:
(接情形2)
现在,我打开
receiver service
,其中包含@RabbitListener
。Queued messages
立即下降到0,并且不会再上升。但是消息的传输仍然工作正常。
情况4:
(接情形2)
现在,我将
receiver service
更改为使用rabbitTemplate.receiveAndConvert
。我手动
receive
通过使用循环每隔2秒从queue
接收消息。sent
从sender service
每隔2s循环一次,与前面的情况相同)现在
Queued messages
保持不变-一条直线receiver service
启动之前,您已经排队了多少条消息,在我的情况下是1
,然后它停留在1
)。结论:
我怀疑,当消息消耗得太快时,
Queued messages
只会显示0。这与OP所说的一致:
不需要对消息进行排队是不是太快了?
(or,我可能会搞砸RabbitMQ中的一些设置,导致错误的结论。我不这么认为,但idk,我不熟悉RabbitMQ。)