rabbitmq中已经定义过的非持久化队列再次定义为持久化队列报错问题
2017-06-08 14:49
375 查看
rabbitmq中已经定义过的非持久化队列再次定义为持久化队列会报如下错误
这是因为已经定义的队列,再次定义是无效的,这就是幂次原理。RabbitMQ不允许重新定义一个已有的队列信息,也就是说不允许修改已经存在的队列的参数。如果你非要这样做,只会返回异常。
Exception in thread "main" java.io.IOException at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106) at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102) at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124) at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:844) at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:61) at com.aitongyi.rabbitmq.queues.NewTask.main(NewTask.java:32) Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'hello' in vhost '/': received 'true' but current is 'false', class-id=50, method-id=10) at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67) at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33) at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:361) at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:226) at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118) ... 3 more Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'hello' in vhost '/': received 'true' but current is 'false', class-id=50, method-id=10) at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:484) at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:321) at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144) at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91) at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:556) at java.lang.Thread.run(Thread.java:744)
这是因为已经定义的队列,再次定义是无效的,这就是幂次原理。RabbitMQ不允许重新定义一个已有的队列信息,也就是说不允许修改已经存在的队列的参数。如果你非要这样做,只会返回异常。
相关文章推荐
- VS2005链接问题: LNK2005错误 :error LNK2005: _free 已经在 libcmtd.lib(dbgheap.obj) 中定义
- 命名空间问题。namespace。也会弄死人的。已经添加引用了,但还是出现,class为定义。
- 静态成员变量初始化问题。关于 error LNK2005 static int:已经在***.obj中定义
- Java使用Rabbitmq惊喜队列queue和消息内容的本地持久化核心方法。(内容存储在硬盘)
- error LNK2005: "class Managers manager" (?manager@@3VManagers@@A) 已经在 Managers.obj 中定义(实例化问题出错)
- [Unity&photon&]多个同一系列的组件导入产生的问题已经包含了一个定义
- C++中的“error:LNK2005 已经在*.obj中定义”异常问题
- 解决JPA 注解开发 Myeclipse 2017 C9 出现没有发现持久化单元中定义的名为 问题
- RabbitMQ(二)队列与消息的持久化
- 关于LNK2005:DllMain已经在xxx中被定义的问题
- 一个苦恼了两天的问题,把问题还原如下:以备后查(mfc库中已经定义了DllMain)
- 关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决
- asp.net定义用户控件时,属性持久化和如何动态加载的问题
- 18.3.20 MFC 遇到函数模板已经定义, 多次初始化之类的问题
- 关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决
- 关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决
- 明晰你的问题,当问题真正得到定义时,问题已经解决了一半
- RabbitMQ之消息持久化(队列持久化、消息持久化)
- springboot 集成rabbitmq 并采用ack模式 以及封装队列定义
- 再次解决以前遇到而且已经解决的问题