(记录)整合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服务总线