RabbitMQ:在 pub/sub 中,消费者是轮询队列以获取新消息还是服务器推送消息?

Posted

技术标签:

【中文标题】RabbitMQ:在 pub/sub 中,消费者是轮询队列以获取新消息还是服务器推送消息?【英文标题】:RabbitMQ: In pub/sub is the consumer polling the queue for new messages or does the server push messages? 【发布时间】:2015-06-24 05:11:33 【问题描述】:

我似乎无法在任何地方找到此信息,或者我可能不理解它。在 RabbitMQ 的发布/订阅模式中,当生产者生成消息时,消费者如何知道队列中有新消息?

消费者是否经常轮询队列以检查是否有任何新消息,或者交换器是否向消费者“推送”通知说有新消息?

【问题讨论】:

另见this 回答,它解释了消费消息的工作原理:服务器推送和客户端获取异步回调。 【参考方案1】:

消费者打开一个网络 TCP 连接和一个到 RabbitMQ 服务器的通道。

basic get 会向服务器请求消息:消息是由客户端从服务器拉取的。如果没有消息可用,则向客户端发送一个空响应。

consume 将启动消费者场景:服务器将消息推送到客户端。

所以消费者会知道有消息,因为它可以拉他们(获取)或者他们可以推送给他(消费)。

交易所向消费者“推送”通知说有一个新的 留言?

交换器用于路由到队列。当消费者从队列中消费时,它们什么也不推送。

【讨论】:

以上是关于RabbitMQ:在 pub/sub 中,消费者是轮询队列以获取新消息还是服务器推送消息?的主要内容,如果未能解决你的问题,请参考以下文章

Jms:具有多个消费者的 Pub/Sub

rabbitMQ工作模式

redis pub sub 生产者可以当消费者吗

Pub/Sub Lite 延迟消费者

Redis pub/sub

列出 Pub/Sub 订阅使用者