这对我来说是一个新领域,所以希望我的问题有道理。
在我的程序中,我有大量的客户端,这些客户端是在笔记本电脑上运行的Windows服务 - 通常是断开连接的。偶尔他们上线,我希望他们根据用户配置文件接收更新。有许多类型的通知要求客户端在本地应用程序(即笔记本电脑)上执行某些工作。
我意识到我可以通过一系列宁静的数据库查询来做到这一点,但由于有太多的客户端(超过10,000个)并且有很多不同的通知类型,我很好奇是否这可能不是更好的问题适合像RabbitMQ甚至0MQ这样的消息传递产品。
但是如何设置它呢? (让我们假设在RabbitMQ中?
是否会为每个用户分配自己的队列? 或者最好让每个队列成为不同的通知类型,并且您可以使用某些直接交换或基于路由密钥过滤消息的组合,其中路由密钥可以是用户名。
由于每个用户可能根据用户个人资料可能会有不同的通知集,因此我认为每个客户端/消费者都会为每个位于队列上的通知提供特定消息,等待他们联机并处理它。
这是思考问题的正确方法吗?提前谢谢。
答案 0 :(得分:1)
平衡大量队列比过滤长队更容易,因此最好每个消费者使用队列。 消息可以具有任意标题和正文,因此它是通知类型的正确位置。 由于您将使用长队列,等待磁盘上的消费者 - 您最好使用延迟队列https://www.rabbitmq.com/lazy-queues.html(从版本3.6.0开始可用)