RabbitMQ Layout-了解RabbitMQ如何适应各种场景,通过开发人员解决问题的故事讲述-这是RMQ拓扑设计的“为什么”(交换,队列和绑定)<disclosure: the author of the answer is also the author of the recommended book>
RabbitMQ Patterns-了解消息传递系统中的消息类型、路由和常见使用模式,如应用于RabbitMQ -这是使用RMQ进行应用程序和拓扑设计的核心模式“how-to”<disclosure: the author of the answer is also the author of the recommended book>
1条答案
按热度按时间euoag5mw1#
RabbitMQ中的单个队列,当多个队列?
一个单独的队列是一个非常糟糕的主意。最终你会希望不同类型的消息通过rabbitmq。如果你只有一个队列,你最终会重新产生如何决定哪段代码应该处理消息的逻辑,而RabbitMQ可以通过路由为你做这件事。
一般来说,要完成每种类型的“工作”(由消息表示)都应该是它自己的队列。
有时候,特定的消息使用者需要自己的队列,即使相同类型的消息正在流向其他队列。
还是由生产者决定是将消息发送到单个队列还是多个队列
生产者不决定它将消息传递到哪个队列。生产者只知道通过哪个交易所发布。消息使用者应该决定消息的传递位置。消息使用者应该负责设置交换机和目的地队列之间的路由。
就像软件开发中的每一个“好主意”一样,这也有例外,但总的来说,我发现这是正确的。
是否应该依赖于数据库的模式
你的RabbitMQ配置与你的数据库没有关联。别想在两者之间找到对应。最多也会很痛苦
而是看行为。
此消息需要触发什么类型的行为?它的具体行为是什么,应该使用哪个交换/路由密钥发布它?
这些是更好的问题,将引导您获得更好的RabbitMQ布局,重点关注相关消息组的交换,专用于特定类型的消息消费者或特定消费者的队列,以及提供将消息从交换移动到正确队列的逻辑的路由键。
...
我建议你阅读一些关于RabbitMQ的书籍,让自己在正确的方向上滚动,了解如何使用RabbitMQ的基础知识,然后进入良好的使用模式和拓扑设计: