RabbitMQ队列没有生成或者队列生成但是与交换机没有绑定成功解决办法

队列没有生成或者队列生成但是与交换机没有绑定成功解决办法


之前在开发的时候遇到了这个问题,一直没有找到解决方案,后面也是在前辈的指导下知道了这类问题的处理方式,总结下来希望能给大家一点帮助。

1.首先新建两个交换机(x-test,x-textdead)
2.然后新建三条队列(testone,testtwo,testthree)
程序正常启动,队列跟交换机也正常建立,并且绑定关系正常。

3.然后在到shovel建立一条testone的shovel。可以明显的看到testone会有一个消费者在等待消费。而这个消费者,就是shovel为这个队列自动创建的。
这个时候我们将所有队列删除,shovel会自动创建一条名字为testone消费的队列。但是属性会与xml当中配置的textone不一样。

4.这个时候我们重启服务,除了shovel自动建立的testone队列外,其他队列都没有正常建立,并且之前建立的两个交换机也没有出现任何绑定关系

5.将shovel删除,由shovel建立的队列testone也删除,再次重启服务,队列正常建立并且与交换机的绑定关系正常。

总结: 整个流程给大家捋了一遍,其实就是因为之前建立的队列可能由于某种原因删除了,但是队列又绑定了shovel,所以在启动服务时,同一条队列,xml配置的属性与由shovel自动建立时配置的属性发生冲突,从而导致了其他队列建立失败,队列建立失败,绑定关系也自然不会绑定了(当然这里说的冲突也不一定是队列属性的冲突,也有可能是交换机或者其他的)。

这里还有一个需要注意的点,配置在队列的ignore-declaration-exceptions属性,当这个属性声明为true时,在生成队列时,如果发生冲突,会使用已经建立好的队列,并且把冲突信息给吞掉,有可能就会导致在日志看不到异常信息,定位不到问题。

总结的可能不是特别到位,程序员小生还在努力当中,看了我的描述希望能给大家带来一点帮助,嘿嘿

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值