rabbitmq系列问题解决:406, "PRECONDITION_FAILED - inequivalent arg 'durable'
1. 安装rabbitmq,查看官网文档: https://www.rabbitmq.com/#getstarted
由于我是先安装了rabbitmq后自己随手创建了queue,后面又按照官方给的"hello world"例子去测试,结果发生了“406, "PRECONDITION_FAILED - inequivalent arg 'durable'” 这个错误信息。
1. 先在管理页面创建的queue
2. 创建的exchanges
上图中红线的 durable 是指是否持久化,可以看到我创建时设置的为true。
3. 官方的hello world 例子:
官网文档地址:https://www.rabbitmq.com/tutorials/tutorial-one-python.html
代码(python版本):
(生产者)
(消费者)
但是当我运行上面的代码时,却报错:
错误信息翻译过来大致意思就是:当前的queue的durable属性是true,但是我们声明queue时过去的参数确实是false.
这个错误造成的原因是现在页面创建了queue和exchanges,但是代码中声明要使用的queue时,durable属性传递的是false.
ok,那么代码怎么搞了? 可以从pyhton错误信息的中的堆栈部分找到返回错误的文件:File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pika/adapters/blocking_connection.py"
那么找到这个文件,看看源码是什么情况:
可以看出来,这个函数里默认durable为false,那么我们将自己的代码改造一下,设置durable为true.
执行结果:
可以看到是成功了的。
要注意的是,生产者和消费者对queue的声明函数里,这个durable必须保持一致。
rabbitmq系列问题解决:406, "PRECONDITION_FAILED - inequivalent arg 'durable'的更多相关文章
- Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'type' for exchange 'me
在启动RabbitMQ消费端的时候报错:Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol ...
- RabbitMQ inequivalent arg 'durable' for exchange 'csExchange' in vhost '/': received
错误:inequivalent arg 'durable' for exchange 'csExchange' in vhost '/': received 使用不同的MQ客户端时,常常会出现以上错误 ...
- PRECONDITION_FAILED - inequivalent arg 'type' for exchange 'exchange' in vhost '/': received 'direct
最近在搞rabbitmq,把解决问题方法记下 问题1:PRECONDITION_FAILED - inequivalent arg 'type' for exchange 'exchange' in ...
- rabbitmq inequivalent arg 'x-message-ttl' for queue 'QUEUE_NAME' in vhost '/'异常解决
中午调整了一台应用服务的mq ttl参数后,重启时出现如下异常: Caused by: com.rabbitmq.client.AlreadyClosedException: channel is a ...
- RabbitMQ 信道(channel)挂掉,但连接仍然存在,同时出现错误:Received remote Channel.Close (406): PRECONDITION_FAILED - unknown delivery tag x 的问题
该问题经过一番试验,发现是消费者(consumer)程序逻辑错误导致:在消息处理的回调函数中多次ack或nack. 开启Python日志,并在回调函数中两次ack得到如下信息: F:\software ...
- 在Node.js中使用RabbitMQ系列二 任务队列
在上一篇文章在Node.js中使用RabbitMQ系列一 Hello world我有使用一个任务队列,不过当时的场景是将消息发送给一个消费者,本篇文章我将讨论有多个消费者的场景. 其实,任务队列最核心 ...
- RabbitMQ系列(二)深入了解RabbitMQ工作原理及简单使用
深入了解RabbitMQ工作原理及简单使用 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchange介绍 ...
- RabbitMQ系列教程之六:远程过程调用(RPC)(转载)
RabbitMQ系列教程之六:远程过程调用(RPC) 远程过程调用(Remote Proceddure call[RPC]) (本实例都是使用的Net的客户端,使用C#编写) 在第二个教程中,我们学习 ...
- RabbitMQ系列教程之二:工作队列(Work Queues)(转载)
RabbitMQ系列教程之二:工作队列(Work Queues) 今天开始RabbitMQ教程的第二讲,废话不多说,直接进入话题. (使用.NET 客户端 进行事例演示) ...
随机推荐
- js , forEach 用法
person.forEach((item,index) => { console.log( item.id ); if( id == item.id ){ item.is_selected = ...
- Caliburn.Micro框架之Action Convertions
首先新建一个项目,名称叫Caliburn.Micro.ActionConvertions 然后删掉MainWindow.xaml 然后去app.xaml删掉StartupUri这行代码 其次,安装Ca ...
- Python requests 调Jenkins登录接口,返回404,但请求地址、请求头、消息主题和抓包的内容都一样
#coding=utf-8import requests url = "http://localhost:8080/jenkins/j_acegi_security_check"h ...
- css如何玩转有序无序列表项list样式
在无序列表ul>li中,无线列表的标志是出现在各列表前面的圆点.在有序列表ol>li中,前面默认带有数字,如何修改列表前面的项目符号,只需要通过list-style调整就好,常见的符号有( ...
- 使用JDBC获取数据库中的一条记录并封装为Bean
比如我数据库中存入的是一条一条的用户信息,现在想取出一个人的个人信息,并封装为Bean对象,可以使用queryForObject来获取数据并通过new BeanPropertyRowMapper(Be ...
- redis集群redis-cluster搭建
redis集群搭建--参考微信公众号(诗情画意程序员):https://mp.weixin.qq.com/s/s5eJE801TInHgb8bzCapJQ 这是来自redis官网的一段介绍,大概意思就 ...
- Lucene之分析器
什么是分析器? 分析(Analysis)在Lucene中指的是将域(Field)文本转换为最基本的索引表示单元—项(Term)的过程. 分析器(Analyzer)对分析操作进行了封装,通过执行一系列操 ...
- JS高阶编程技巧--惰性函数
在vue.react等框架大量应用之前,我们需要使用jQuery或者原生js来操作dom写代码,在用原生js进行事件绑定时,我们可以应用DOM2级绑定事件的方法,即:元素.addEventListen ...
- day 17 初始递归
递归函数 了解什么是递归 : 在函数中调用自身函数 最大递归深度默认是997/998 —— 是python从内存角度出发做的限制 能看懂递归 能知道递归的应用场景 初识递归 —— 算法 —— 二分查找 ...
- #6041. 「雅礼集训 2017 Day7」事情的相似度 [set启发式合并+树状数组扫描线]
SAM 两个前缀的最长后缀等价于两个点的 \(len_{lca}\) , 题目转化为求 \(l \leq x , y \leq r\) , \(max\{len_{lca(x,y)}\}\) // p ...