python - 服务器可以发布广播消息来终止工作人员吗?兔MQ
问题描述
例如,如果一个工作人员正在处理来自队列的消息,有没有办法向所有工作人员广播一条消息以停止处理他们的工作?
我正在使用rabbitmq queue。
我需要暂停工人。
假设四个并行支付工作人员正在运行。就像很多客户在亚马逊上付款一样,客户的每个请求都被推送到队列中,工作人员将从队列中获取请求消息
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 - Extract features into a dataset from keras model
- jenkins-x - 为 Jenkins X 更新构建 podTemplate
- django - What are naming rules of templates in django class based views
- javascript - npm test 很好,但它也会在 askBackend ReferenceError: localStorage is not defined 处引发未捕获的错误
- python - 如何使电报键盘按钮发出命令?
- alfresco - 如何使用 CMIS 创建带有标签的文档
- unity3d - 滑动屏幕时ListView项目值发生变化..Unity
- influxdb - 无法在包含测量的 influxDB 点上创建 Grafana 动态仪表板
- ruby-on-rails - has_many through association dependent error is still referenced in table users
- wordpress - How get the language, which current user set in his profile?