(记录)整合spring cloud bus+rabbitmq后,config server/client启动报错及解决方式

Posted 零环

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(记录)整合spring cloud bus+rabbitmq后,config server/client启动报错及解决方式相关的知识,希望对你有一定的参考价值。

目录

1. 问题背景

今天根据网络上的教程尝试自己搭了一下spring cloud bus + rabbitmq, 以实现spring cloud config 配置的动态刷新(详细配置过程就略去了,网上有很多教程),配置完成后却报了如下错误:

com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue ‘springCloudBus.anonymous.8ceHsCHoRM2i5_BygxYe0Q’ in vhost ‘/’, class-id=50, method-id=10)

错误字面意思是默认vhost ‘/’ 中找不到队列, 访问rabbitmq的web管理页面,确实没有相应的队列,但连接却已存在(程序本身启动成功)


本人作为新手第一次接触rabbitmq, 于是只能开启了面向百度编程之旅。。。

2. 查找资料

对于这个问题,我在网上搜索到的唯一解决方案是这样的,
一句话解决方案 (未必是原始出处) 里面只有这样一句话:

项目启动报此异常,解决方式:用root权限登陆rabbitmq,admin处添加vhost

没错,就是这么精简。。。不过好在添加vhost的教程还是很多的,我个人参考的教程是这篇:RabbitMQ管理界面使用——用户权限vhost等设置

3. 最终解决

首先根据上方的参考资料添加一个新的vhost, 效果如图(/demo是我自己起的名字)

注意连接的用户要有新增vhost的访问权限哦~

到这里还没有结束,在应用的配置文件里也要加上virtual-host名才行(我被这一步卡了很久)

  rabbitmq: 
    host: XXX
    port: 5672(注意不要写成15672)
    username: XXX
    password: XXX
    virtual-host: /demo (自己的vhost名)

如果配置文件的格式是.propterties而不是.yml的话,就这样写

 spring.rabbitmq.host=XXX
 spring.rabbitmq.port=5672
 spring.rabbitmq.username=XXX
 spring.rabbitmq.password=XXX
 spring.rabbitmq.virtual-host=/demo

接下来再启动项目就大功告成了,也能够在web管理页面中查到相应的队列:


感谢阅读

这是我第一次写博客,如有不足之处希望大家多多包含,如果能提出建议就更好了,也希望这篇文章能够帮助到一些碰到同样问题的人,如果有人知道为什么默认的vhost里没法创建springCloudBus匿名队列,也希望能解答一下我的疑惑,感谢阅读~

以上是关于(记录)整合spring cloud bus+rabbitmq后,config server/client启动报错及解决方式的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud 入门教程:和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus

Spring Cloud学习记录 08Spring Cloud Bus服务总线

spring cloud bus原理总结

springcloud 整合openFeign

问题 spring-cloud-config 和 spring-cloud-bus

spring cloud-stream 和 spring cloud-bus 有啥区别?