【发布时间】:2014-07-09 21:43:34
【问题描述】:
我正在用 RabbitMQ 编写一个系统。我已经将它用于工作队列,如他们的tutorial 中所述。非常简单直接。当我们将消息发布到队列时,我知道谁来处理它:生产者和消费者以一对一的关系耦合(直到现在还可以)。
我现在想做更复杂的事情(消费者和生产者之间的 n-m 关系):
- 生产者发布消息,但不知道如何处理它。 (发送事件)
- 不同的消费者类型对同一条消息执行不同的操作(例如,统计信息和日志记录)
- 我们可以运行多个消费者类型的实例(比如 3 个统计消费者和 2 个日志消费者)
- 所有消费者类型都可以处理每条消息
- 每条消息必须由每个消费者类型(竞争消费者)处理一次
当我阅读文档时,我不确定如何实现它,尤其是我提到的最后一点(竞争消费者)。我对路由键、主题和交换感到困惑。出于监控需求,我希望有可预测的队列名称。
感谢您的帮助。
【问题讨论】:
-
我不确定这个问题是否相同,特别是对于我问题的“每条消息必须由每个消费者类型处理一次”部分:stackoverflow.com/questions/12686868/rabbitmq-amqp-queue-design