代码改变世界

406, "PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'hello' in vhost '/': received 'true' but current is 'false'"

2019-06-11 05:02  gangzi4321  阅读(5911)  评论(0编辑  收藏  举报

环境描述:

  1. Erlong使用的是:otp_win64_21.0.1

  2. RabbitMQ使用的是:rabbitmq-server-3.7.8

  3. Windows10x64

问题描述:

  测试RabbitMQ时报:406, "PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'hello' in vhost '/': received 'true' but current is 'false'"

问题代码:

  channel.queue_declare(queue='hello',durable=True) # durable 队列持久化

查看源码:

# def queue_declare(self, # channel.queueDeclare 用来创建队列,有5个参数:
# queue, # String queue, 队列名;
# passive=False,
# durable=False, # boolean durable, 该队列是否需要持久化
# exclusive=False, # boolean exclusive,该队列是否为该通道独占的(其他通道是否可以消费该队列)
# auto_delete=False, # boolean autoDelete,该队列不再使用的时候,是否让RabbitMQ服务器自动删除掉;
# arguments=None)

  passive:是屈服的意思,将passive设为True,问题解决。

正确代码:

  channel.queue_declare(queue='hello',durable=True,passive=True) # durable 队列持久化