python - 服务器可以发布广播消息来终止工作人员吗?兔子MQ

标签 python rabbitmq message-queue

例如,如果一个工作人员正在处理队列中的一条消息,是否有办法向所有工作人员广播一条消息以停止处理他们的工作?

我正在使用rabbitmq队列

我需要暂停工作人员。

假设有四个并行支付工作人员正在运行。 就像很多客户在亚马逊上付款一样,客户的每个请求都会被推送到队列中,工作人员将从队列中取出请求消息

def payment_worker():
      check_account_is_valid()
      check_card_id_valid()
      post_to_paymentGateway() #it has only one merchant (lets' say AMAZON PAY)

因此,如果四个支付工作人员并行运行,如果其中一个工作人员在 post_to_ paymentGateway 方法上失败,我需要暂停剩余的工作人员,直到亚马逊付款解决。这样当我恢复工作人员时,就不会再出现任何付款失败的情况。

有解决办法吗?

最佳答案

不,它不能。

如果您的工作线程是单线程的并且从共享工作队列中读取,那么您无法可靠地“暂停”它们。一种可能的方法是让这些工作人员在处理每条消息之前查询某些集中机制(api、db、redis 等)以获取“go”状态。

关于python - 服务器可以发布广播消息来终止工作人员吗?兔子MQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56192396/

相关文章:

Python - 使用变量作为字符串格式化的一部分

python - 原生 TF 与 Keras TF 性能比较

c - 获取最大消息数和最大消息大小的内核消息队列大小的默认值

redis - redis/kafka如何实现禁止重复消费

python - Pandas boolean 系列不会绘制

python - Robot Framework : How to know that variable is list, 字典或正则

java - Spring AMQP 的 "Cannot convert value of type"异常

c# - 使用 MassTransit、RabbitMQ 和 SignalR 的分布式架构

erlang - 在 Windows 10 64 位上安装 Erlang/RabbitMQ

linux - 消息队列内容存储在哪里?