什么时候应该使用单个队列?

时间:2016-02-01 09:11:40

标签: rabbitmq activemq stomp

我想知道,是否有规定何时在RabbitMQ中创建单个队列以及多个队列?或者由生产者决定是否将消息发送到单个队列或多个队列,技术上没有区别?它应该依赖于db的模式,也就是说,单个表是否应该对应于单个队列?

1 个答案:

答案 0 :(得分:2)

  

RabbitMQ中的单个队列和多个队列?

单个队列是一个非常糟糕的主意。最终你会希望不同类型的消息流过rabbitmq。如果你只有一个队列,那么当RabbitMQ可以为你做路由时,你将最终重现如何决定应该处理消息的代码的逻辑。

一般来说,每种类型的"工作"要完成,由消息表示,应该是它自己的队列。

即使相同类型的消息流向其他队列,特定消息使用者也有时需要它自己的队列。

  

或者由生产者决定是否将消息发送到单个队列或多个队列

生产者不会决定它传递给哪个队列的消息。生产者只知道要通过哪个交易所发布。消息消费者应该是决定消息传递位置的消息。消息使用者应负责在交换机和目标队列之间建立路由。

对此有例外,例如每个"好主意"在软件开发中,但总的来说我发现这是真的

  

它应该依赖于db

的模式

您的RabbitMQ配置与您的数据库没有任何关联。不要试图在两者之间进行映射。充其量只会是痛苦的。

相反,看看行为。

此消息需要触发什么类型的行为?具体的行为是什么,以及哪个交换/路由密钥应该与其一起发布?

这些更好的问题将引导您获得更好的RabbitMQ布局,重点关注相关消息组的交换,专用于特定类型的消息使用者或特定使用者的队列,以及提供逻辑的路由键将消息从交换机移动到正确的队列。

...

我建议您阅读RabbitMQ上的一些书籍,以便了解如何使用RabbitMQ的基础知识,然后进入良好的使用模式和拓扑设计:

  • RabbitMQ In Action - 从零开始,它是什么,为什么你应该使用它,它是如何工作的,等等推荐给任何看过RMQ的人
  • RabbitMQ Layout - 了解RabbitMQ如何适应各种场景,正如开发人员解决问题的故事所述 - 这就是"为什么到" RMQ拓扑设计(交换,队列和绑定)
  • RabbitMQ Patterns - 了解消息系统中的消息类型,路由和常见使用模式,适用于RabbitMQ - 这是核心模式"操作方法"适用于RMQ的应用和拓扑设计