Python rabbitmq筛选器工作队列
我一直在阅读rabbitMQ教程,我正在寻找一些关于我应该使用的设置的帮助 我有一个1-50个任务的列表,我希望在一组4台计算机上运行一次(并且只运行一次),每台计算机运行一个worker。我已经在上设置了一个类似于教程2的模板 并非所有计算机都能运行所有任务(并非所有计算机都安装了软件) 我试图实现的是允许对发送给工作人员的任务进行筛选的设置 我阅读了关于如何在使用路由的广播情况下实现这一点的教程,但是我没有完全掌握如何将其映射回与教程2类似的更简单的推送模型(因为我不想广播作业) 在接下来的某个时刻,我希望能够根据负载动态调整每个盒子上的工作人员数量 我应该使用的最佳模型是什么?有什么好的教程或文章可以推荐学习这种方法吗 干杯,Python rabbitmq筛选器工作队列,python,rabbitmq,Python,Rabbitmq,我一直在阅读rabbitMQ教程,我正在寻找一些关于我应该使用的设置的帮助 我有一个1-50个任务的列表,我希望在一组4台计算机上运行一次(并且只运行一次),每台计算机运行一个worker。我已经在上设置了一个类似于教程2的模板 并非所有计算机都能运行所有任务(并非所有计算机都安装了软件) 我试图实现的是允许对发送给工作人员的任务进行筛选的设置 我阅读了关于如何在使用路由的广播情况下实现这一点的教程,但是我没有完全掌握如何将其映射回与教程2类似的更简单的推送模型(因为我不想广播作业) 在接下来的
RobRabbitMQ不提供有选择地使用队列中的消息的方法。队列中的使用者始终有机会接收该队列中的任何给定消息。因此,您必须对队列中的消息进行预筛选,以完成特定类型的工作。一旦您这样做了,您的消息消费者就只能从队列中消费他们可以处理的工作类型 假设你有3种工作要做:
- 若巴
- 乔布
- 约伯
nack
将消息返回队列。但不能保证你的信息会被另一个能处理它的消费者接收。它可能返回到同一消费者,该消费者随后将nack
它再次返回队列
这是RabbitMQ中的最新版本
相反,您需要将邮件预筛选到队列中,以进行特定类型的工作。您可以通过使用exchange->queue绑定中的路由键来实现这一点
使用上述三种作业类型,您可以进行如下设置:
| exchange | routing key | queue |
| -------- | ----------- | ----- |
| jobs | job.a | job.a |
| jobs | job.b | job.b |
| jobs | job.c | job.c |
|交换|路由密钥|队列|
| -------- | ----------- | ----- |
|工作,工作,工作,工作|
|jobs | job.b | job.b|
|jobs | job.c | job.c|
使用这些消息的代码需要知道它可以处理哪种类型的作业。然后,它只订阅该类型工作的队列
假设您有两台计算机是消息使用者。计算机1可以处理作业A和作业B。计算机2可以处理作业B和作业C。在这个场景中,您将得到一台处理JobA的计算机、两台处理JobB的计算机和一台处理JobC的计算机。总共只有两台计算机,但每台计算机处理多个作业。。。不过,只有他们知道如何处理工作
通过让Computer1订阅job.a和job.b的队列,可以保证Computer1只获取JobA和JobB。这同样适用于系统中的任何其他使用者
这样做之后,扩大工人数量就很容易了。你需要更多的JobA员工吗?没问题。只需添加作业的另一个使用者。一个队列
希望有帮助 感谢您提供了如此详细和解释充分的答案,这是有意义的,我将采取这种方法:)链接也很好^^