环境描述:
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 队列持久化