RabbitMQ 消费者断开事件

Bab*_*mes 5 events message rabbitmq

有什么方法我们可以知道消费者何时从队列断开连接或队列何时被删除?

要求如下:

我正在构建一个系统,其中多个客户端可以订阅系统中的某些事件。所有客户端都会创建自己的队列,并使用某种身份验证在系统中注册自己。当事件生成时,系统会过滤事件并将其转发给符合条件的客户。

我已经实现了其中大部分内容的 POC,效果很好。我无法解决的一个问题是,如果客户端只是从队列中断开连接(由于程序终止等原因),则注册仍然存在,并且系统会继续尝试将消息推送到该客户端。

因此,我们希望在客户端断开连接或队列被删除时收到通知,以便我们可以删除该客户端的注册数据并且不再向他推送消息。

pin*_*ain 3

让您的发布者利用确认(又名发布者确认)并使客户端队列具有排他性和瞬态性,因此一次只有一个客户端会从一个队列中消费,并且在断开连接后它将被删除。

如果您发布的消息仅路由到一个队列,并且该队列消失了(假设您使用发布者确认并发布mandatory设置了标志的消息)发布者将收到通知,消息无法路由,并且该消息返回给它,因此您可以停止发布消息。

有关详细信息,请参阅RabbitMQ 博客文章“发布者确认简介”中的确认工作方式部分和确认(又名发布者确认)官方文档。