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 中,消费者是轮询队列以获取新消息还是服务器推送消息?的主要内容,如果未能解决你的问题,请参考以下文章