【发布时间】:2015-11-17 13:18:53
【问题描述】:
我正在尝试使用 RabbitMQ 实现任务分配系统。我从本文中的代码开始:http://deontologician.tumblr.com/post/19741542377/using-pika-to-create-headers-exchanges-with - 有一个标头交换,并且多个消费者的队列使用不同的标头值绑定到它。
每条消息(任务)都有一个标头“env”,它指定了运行任务的环境。将来可能需要根据更多标头做出决策。消费者可以提供多个环境,因此我将他的队列绑定到标题交换多次不同的标题值。
这样,我可以设置两个消费者 A 和 B。A 提供环境“foo”和“bar”,B 仅提供“bar”。现在,当需要环境“bar”的任务时,它会同时交付给 A 和 B,但我只希望它去其中一个(实际上并不重要)。
似乎当发布与多个消费者的标头匹配的消息时,它会传递给所有消费者。但是,我需要将每条消息准确地传递给一个具有匹配标头的消费者。有没有办法实现这一目标?
【问题讨论】:
-
您能否举例说明标头值可能如何变化以及您需要如何将消息发送给不同的消费者?
-
@kponz 我把问题扩大了一点......
-
您可以考虑设置队列以匹配您的环境,即创建一个
foo和一个bar队列,然后将您的消费者绑定到他们感兴趣的队列(A 绑定到两者, B只给bar)
标签: rabbitmq message-queue pika