RabbitMq 406错误

在集成测试中遇到RabbitMQ启动报错,解决过程包括确认队列已持久化并修改名称,删除旧队列后重启成功。关键在于理解队列持久化设置问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码报错如下:

 [AMQP Connection 127.0.0.1:5672] ERROR o.s.a.r.c.CachingConnectionFactory - Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'durable' for exchange 'exchange_topics_inform' in vhost '/': received 'true' but current is 'false', class-id=40, method-id=10)

我在测试的时候,rabbitMQ能正常工作,整合后发现就启动报错,找了半天:

  1. 该队列已经持久化存在,修改一下队列的名称

  2. 去rabbitMq控制台将先前的队列删除

然后重启就ok

### RabbitMQ 常见错误及解决方案 #### 1. 节点无法启动 当尝试重启节点时遇到问题,可能是因为先前的队列或消息未被正确清理。执行 `rabbitmqctl reset` 可以重置节点状态并清除所有数据[^1]。 ```bash sudo rabbitmqctl stop_app sudo rabbitmqctl reset sudo rabbitmqctl start_app ``` 此命令序列适用于单个节点出现问题的情况,在集群环境中需谨慎操作以免影响其他成员。 #### 2. 集群同步失败 如果发现集群内的某些节点未能与其他节点保持一致,则可能是由于网络分区或是配置文件中的主机名设置不匹配所引起。确认各服务器间的连通性良好,并检查 `/etc/hosts` 文件以及 Erlang cookie 的一致性。 对于因网络波动造成的短暂分离现象,等待一段时间让系统自行恢复通常即可解决问题;而对于更严重的状况则需要手动干预来修复连接关系。 #### 3. 连接数过多导致资源耗尽 应用程序创建了大量短生命周期的TCP连接而没有及时关闭它们的话,可能会造成RabbitMQ服务端口耗尽。此时应该优化客户端代码逻辑减少不必要的链接建立次数,同时调整操作系统参数增加最大允许打开文件描述符的数量: 编辑 `/etc/security/limits.conf` 添加如下行: ```text * soft nofile 65535 * hard nofile 65535 ``` 另外还可以通过修改RabbitMQ配置文件限制每秒新连接的最大数量防止突发流量冲击。 #### 4. 消息积压严重 生产者发送速率远高于消费者处理能力会造成内存占用过高甚至崩溃的风险。针对这种情况建议采取措施降低发布频率或者提高消费效率,比如批量提交任务、水平扩展工作进程数目等手段都可以有效缓解压力。 此外开启持久化选项虽然能够保证可靠性但也增加了磁盘I/O负担,因此要权衡利弊合理运用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值