RabbitMQ 发布/订阅与轮询

Ami*_*ert 3 publish-subscribe rabbitmq

我在我的应用程序中使用 RabbitMQ 来进行客户端和服务器之间的通信。

大多数时候,客户端向服务器发送信息。但有时客户端需要了解服务器中的一些更新。

目前,我使用 1 分钟间隔轮询来询问服务器是否有更新。

我的问题是,使用发布/订阅机制向客户端“推送”更新会更好吗?

我有大量的客户(大约10000)。那么开10000个队列,每个客户端一个队列可以吗?

Ale*_*lor 6

“更好”是一个相对术语,因此很难说哪种方法更适合您。然而,队列旨在高效、大规模地处理这种事件驱动的系统。RabbitMQ 文档讨论了使用fanout交换来处理您的情况。

在队列上使用事件的好处是可以消除不必要的工作(例如,在没有有效负载时进行轮询),并减少延迟(您当前的系统会引入长达一分钟的延迟)。在具有轮询层的系统中,延迟可能尤其成问题,这可能会使数据延迟远远超出程序员最初的预期。