如何修复此rabbitmq/芹菜错误?

如何修复此rabbitmq/芹菜错误?,rabbitmq,celery,Rabbitmq,Celery,因此,我在多台服务器上运行芹菜,并使用集群rabbitmq后端。最近,我对芹菜所做的任何事情都开始无限期地挂起,检查rabbitmq的日志为我提供了一条模糊的错误消息: =ERROR REPORT==== 20-Mar-2013::23:52:25 === connection <0.15823.3>, channel 1 - soft error: {amqp_error,not_found, "no binding i-69995906 between excha

因此,我在多台服务器上运行芹菜,并使用集群rabbitmq后端。最近,我对芹菜所做的任何事情都开始无限期地挂起,检查rabbitmq的日志为我提供了一条模糊的错误消息:

=ERROR REPORT==== 20-Mar-2013::23:52:25 ===
connection <0.15823.3>, channel 1 - soft error:
{amqp_error,not_found,
        "no binding i-69995906 between exchange 'i-69995906' in vhost 'celery' and queue 'i-69995906' in vhost 'celery'",
        'queue.bind'}

我需要做什么来消除错误?我已经重新启动了Rabbitmq,重新安装了Rabbitmq,并删除和恢复了集群。我猜我需要恢复先前存在的绑定,但我不知道如何从rabbitmqctl或芹菜中恢复。如果这不起作用,我的芹菜任务一点也不起作用

谢谢你的提问。我最终还是在同一个地方

我可以通过删除vhost并重新创建它来更正此问题

rabbitmqctl delete_vhost celery
rabbitmqctl add_vhost celery
rabbitmqctl set_permissions -p celery <user> ".*" ".*" ".*"
rabbitmqctl delete\u vhost芹菜
rabbitmqctl添加芹菜
rabbitmqctl设置\u权限-p芹菜“*”.*”

我也有这个错误,解决这个问题的唯一方法是立即关闭整个集群,让它运行几秒钟

前言: 我们以前确实遇到过一些分区,无法推送到一个队列,也无法重新创建绑定,并得到与您相同的错误

一个接一个地停止和启动都不起作用。错误仍然存在,我假设集群的某个节点确实缓存了有故障的ip/config

检测: 确定这是否是您的错误的一个好方法是在所有节点上运行
rabbitmqctl list\u队列
。如果节点显示不同的队列,则表明出现了问题

解决方案:
如前所述,解决方案是停止所有rabbit服务器几秒钟,这样就没有“缓存”。当然,这只是一个解决方案,因为您不依赖于永久队列。

我也遇到了同样的问题,并且能够在不关闭群集或重置虚拟主机的情况下解决它

我有一个队列,在集群中绑定了3个路由密钥。当其中一个节点关闭时,我必须删除队列,此后,当我尝试在新创建的队列中以相同的名称再次注册路由密钥时,总是出现“vhost中的exchange与队列之间没有绑定”错误

原始队列创建为“持久”,解决方案是:

  • 删除队列
  • 创建具有相同名称但“暂时”(非持久)的新队列
  • 在队列中注册原始的3个路由密钥。它停止引发错误
因为我想拥有一个持久队列,所以我再次删除了队列,创建了一个新的具有相同名称的“持久”队列,然后绑定路由密钥就完美地工作了


也许通过创建一个具有不同“耐久性”类型的新队列,确实重置了仍然保留在某处的旧绑定。

同样的错误仍然发生在RabbitMQ 3.7.12 Erlang 22.2.1上,有一个github线程建议将RabbitMQ升级到最新版本,目前是3.8.11 Erlang 23.x
rabbitmqctl delete_vhost celery
rabbitmqctl add_vhost celery
rabbitmqctl set_permissions -p celery <user> ".*" ".*" ".*"