【问题标题】:How do I fix this rabbitmq/celery error?如何解决这个 rabbitmq/celery 错误?
【发布时间】:2013-03-21 00:05:15
【问题描述】:

所以我在多台带有集群 rabbitmq 后端的服务器上运行 celery。最近,我对 celery 所做的任何事情都开始无限期地挂起,检查 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'}

运行 rabbitmqctl list_bindings 给了我这个:

# rabbitmqctl list_bindings -p celery
Listing bindings ...
        exchange    celery  queue   celery  []
celery  exchange    celery  queue   celery  []
...done.

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

【问题讨论】:

    标签: rabbitmq celery


    【解决方案1】:

    我遇到了同样的问题,并且无需关闭集群或重置虚拟主机即可修复它。

    我有一个包含 3 个路由键的队列绑定在一个集群中。我必须在其中 1 个节点关闭时删除队列,然后在尝试在新创建的具有相同名称的队列中再次注册路由键时,我总是收到“虚拟主机和队列中的交换之间没有绑定”错误。

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

    • 删除队列
    • 创建一个具有相同名称但“瞬态”(非持久)的新队列
    • 在队列中注册原来的 3 个路由键。它停止引发错误。

    因为我想要一个持久队列,然后我再次删除了队列,创建了一个具有相同名称的新“持久”队列,然后绑定路由键效果很好。

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

    【讨论】:

    • 在 RabbitMQ 3.7.12 Erlang 22.2.1 上仍然出现同样的错误,有一个 github 线程建议将 RabbitMQ 升级到最新版本,目前是 3.8.11 Erlang 23.x
    【解决方案2】:

    感谢您的提问。我最终来到了完全相同的地方。

    我能够通过删除虚拟主机并重新创建它来解决此问题

    rabbitmqctl delete_vhost celery
    rabbitmqctl add_vhost celery
    rabbitmqctl set_permissions -p celery <user> ".*" ".*" ".*"
    

    【讨论】:

      【解决方案3】:

      我也遇到了这个错误,解决它的唯一方法是立即关闭整个集群并让它关闭几秒钟。

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

      一个一个地停止和启动是行不通的。错误仍然存​​在,我假设集群的某个节点确实缓存了一些错误的 ip/config。

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

      解决方案: 如前所述,解决方案是停止所有兔子服务器几秒钟,因此没有“缓存”。当然这只是你不依赖永久队列的一种解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多