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

问题描述 投票:0回答:1

我想知道,RabbitMQ 中何时创建单个队列以及何时创建多个队列是否有规则?或者是否由生产者决定将消息发送到单个队列还是多个队列,并且在技术上没有区别?它是否应该取决于数据库的模式,即单个表是否应该对应于单个队列?

rabbitmq activemq stomp
1个回答
3
投票

RabbitMQ 中的单个队列以及多个队列?

单个队列是一个非常糟糕的主意。最终你会希望不同类型的消息流经rabbitmq。如果您只有一个队列,那么您最终将重复如何决定哪些代码应该处理消息的逻辑,而 RabbitMQ 可以通过路由为您完成此操作。

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

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

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

生产者不决定将消息传递到哪个队列。生产者只知道通过哪个交易所发布。消息消费者应该是决定消息传递到哪里的人。消息消费者应该负责设置交换器和目标队列之间的路由。

也有例外,就像软件开发中的每一个“好主意”一样,但总的来说,我发现这是真的

它是否应该取决于数据库的模式

您的 RabbitMQ 配置与您的数据库零相关性。不必费心尝试在两者之间进行映射。充其量它会很痛苦。

相反,看行为。

这条消息需要触发什么类型的行为?它是什么具体行为,应该使用哪个交换/路由密钥来发布?

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

...

我建议阅读一些有关 RabbitMQ 的书籍,让自己朝着正确的方向前进,掌握如何使用 RabbitMQ 的基础知识,然后进入良好的使用模式和拓扑设计:

  • RabbitMQ 实践 - 从零开始,它是什么,为什么你应该使用它,它是如何工作的,等等,推荐给任何关注 RMQ 的人
  • RabbitMQ 布局 - 通过开发人员解决问题的故事来了解 RabbitMQ 如何适应各种场景 - 这是 RMQ 拓扑设计(交换、队列和绑定)的“原因”
  • RabbitMQ 模式 - 了解消息类型、路由和消息系统中的常见使用模式,应用于 RabbitMQ - 这是使用 RMQ 进行应用程序和拓扑设计的核心模式“操作方法”
© www.soinside.com 2019 - 2024. All rights reserved.