我正在使用带有Python / pika的RabbitMQ来分发一些批处理作业。所以我认为我有一个非常常见的场景:一个进程填充队列,完成工作。多个工作程序检索作业,转换数据并将结果放入第二个队列。另一个单一过程会检索结果并合并它们。到目前为止工作非常精细。但是如何以受控方式停止脚本?是否有一些功能可以使队列“无效”,以便作品能够意识到不会再填充任何作业?
答案 0 :(得分:0)
不,无法找到仍有多少发布者发布到AMQP中的队列。你必须推出自己的系统。
执行此操作的方法是进行fanout
交换,每个工作人员绑定一个队列(让我们将其称为“控制”交换),并让发布者在完成后向其发送特殊消息。然后工人可以检查他们的“控制”队列,看看出版商是否还在那里;如果不是,并且没有可用的消息,他们可以安全地断开连接并关闭。