RabbitMQ用于使用具有不同功能的消费者的工作队列

时间:2017-02-21 14:33:56

标签: rabbitmq

我正在创建一个工作队列设置,其中不同的工作人员/消费者具有不同的功能。我的意思是并非所有工作人员都可以运行所有工作项目。

假设我有以下工人:

Worker A
    Capability 1
    Capability 2
    Capability 3
Worker B
    Capability 1
Worker C
    Capability 1
    Capability 3
  • 如果某个职位需要Capability 1,则可以由任何员工运行。
  • 如果某个职位需要Capability 1Capability 2,则只能由Worker A运行。
  • 如果某个职位需要Capability 1Capability 3,则可以Worker AWorker C
  • 运行
  • 等......

问题

RabbitMQ能否/适合为此类设置调度作业?

1 个答案:

答案 0 :(得分:0)

Is RabbitMQ capable/suitable for dispatching jobs for such a setup?

Rabbit MQ在路由消息以及它附带的许多其他更好的功能方面非常灵活。它绝对能够做你希望做的事情。它是否合适是一个难以回答的问题,因为它取决于许多其他因素。

以下是设置您要执行的操作的一种方法

  1. 创建直接交易(我们称之为JobExchange)。
  2. 创建 3个队列(JobType1.queue,JobType2.queue& JobType3.queue)
  3. 将所有3个队列包含到您的Exchange中
  4. 工人A 听取 JobType1.queue,JobType2.queue& JobType3.queue
  5. 工人B 听取 JobType1.queue
  6. Worket C 收听 JobType1.queue& JobType3.queue
  7. 注意:如果有多个消费者有能力处理某个作业(例如:工人A,B& C可以处理JobType1),则无法控制谁从队列中获取消息(JobType1)在这种情况下.queue)。因此,3名工作人员中的一名将接收该信息,而另外两名工作人员将无法获得该信息。