用于FanOut消息传递的RabbitMQ Work-Queue

时间:2017-01-15 23:22:25

标签: rabbitmq exchange-server amqp

我正在尝试扩展RabbitMQ消息传递系统。当前系统非常简单 - 生产者向扇出交换机发送消息,消息由多个消费者处理 - 经典的扇出路由。

我有多个来自不同类型的消费者(例如:一个打印到屏幕,一个记录到文件,一个保存到DB,......)。 我的挑战 - 我不确定什么是扩大消费者的最佳方式。如果我添加来自相同类型的其他消费者 - 我会在数据库中获得双重日志或双重条目。 ...(想想两个DB消费者在相同的扇出交换中消费)。

我想我可以创建一个发布到工作队列的消费者,但我想知道在rabbitmq中是否有更好的“内置”解决方案。

提前谢谢, ZF

1 个答案:

答案 0 :(得分:0)

如果您需要扩展消费者以便更快地消费来自扇出交换的所有消息,您需要竞争消费;所以你需要更多的消费者连接到与扇出交换有关的同一队列 通过这种方式,每个消费者将独立地消费一批消息。批处理中的消息数使用预取计数属性(http://www.rabbitmq.com/consumer-prefetch.html)定义 通过这种方式,在您的情况下,您应该能够扩展消费者,避免在数据库中使用双重日志和双重条目。