【问题标题】:Kombu disconnects on publishKombu 在发布时断开连接
【发布时间】:2018-05-16 13:14:47
【问题描述】:

我在使用 kombu 4.1 发布消息时遇到问题。我的用例是我有一个服务器,它从 rabbitmq 队列(队列 1)收集消息,执行一些处理任务,然后将它们重新发布到不同的队列(队列 2)。我从队列 1 消费没有问题,但是当我尝试发布到队列 2 时,出现间歇性故障,导致我与 rabbitmq 断开连接。我已经激活了重试和合并的 ConsumerProducerMixin,但问题仍然存在。我也在kombu github页面上发布了这个问题,但无济于事:-https://github.com/celery/kombu/issues/857

是否有人对此问题有任何见解,是否会在 kombu 4.2 中修复,是否有任何不涉及切换到另一个库的解决方法?

谢谢

【问题讨论】:

  • 我找到了一个临时解决方案。我将发布命令放在一个 for 循环中,其中包含一个 try catch,如果发布失败,它可以手动重复发布命令多达 30 次。然而,这似乎是重试命令的复制。有没有人对此有进一步的了解?

标签: python rabbitmq kombu


【解决方案1】:

并没有真正回答为什么会发生这种情况,但有两种解决方法似乎可以为我们解决问题。

  • 在打开新连接时设置heartbeat=0(但也许您需要心跳)。
  • 将kombu 版本降级为v4.0.2。如here 所述,task_publish_retry_policy 似乎与kombu==4.1.0 不同

我希望这会有所帮助!

【讨论】:

  • 还有第三个解决方法,我在发布命令之外添加了一个尝试,以便当它失败时我重新连接到 rabbitmq 并重试发送消息。 task_publish_retry_policy 的这个手动版本现在似乎可以工作,但我仍在等待库的未来版本中的完整修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多