解决rabbitmq队列中消息无法消费的问题
问题描述:
生产者发送消息到队列成功,但是队列中的消息始终没有消费
问题分析:
生产者
msgserver服务
配置文件
![](https://i-blog.csdnimg.cn/blog_migrate/c796f963e978dbcb2ae91abd893f99ec.png)
可以看出除了自己配置的关于的rabbimq的配置信息,msgserver服务调用configserver统一配置中心服务中的QA2环境的config-rabbitmq-qa2.yml配置文件,
![](https://i-blog.csdnimg.cn/blog_migrate/ad3f025b874047f1cb59a5cf5e4127f6.png)
msgserver服务使用JavaConfig配置方式配置RabbitMQ的配置信息
![](https://i-blog.csdnimg.cn/blog_migrate/59ef153fe0d80815a8620ac83ab90e03.png)
从上述过程可以看出配置的RabbitMQ的虚拟地址是/
这个生产消息的服务有四个队列,其中一个叫做queue_sendemail
![](https://i-blog.csdnimg.cn/blog_migrate/789d61ac4c3dab89855666b81e68b516.png)
以上基本上就是产生的消息会放入queue_sendemail队列中
消费者
proxyserver服务
配置文件
![](https://i-blog.csdnimg.cn/blog_migrate/3a26c0dd58086f35862e0036a30fd2fa.png)
Spring整合RabbitMQ的配置文件
![](https://i-blog.csdnimg.cn/blog_migrate/e8e913ef99b48bde832c8d932c68a946.png)
从中可以看出RabbitMQ的虚拟地址是host_qa
监听这个队列的消费者是emailSendListener
![](https://i-blog.csdnimg.cn/blog_migrate/bcd5f490dda55ff1822371288d5743aa.png)
问题所在:
看了上述两个关于RibbitMQ的配置,发现了问题所在,两个服务是配置了同一个消息队列,但是他们的虚拟地址是不一样的,生产者只向队列中发送消息,但是消费者的一端监听的并非这个虚拟地址的队列,因此无法消费消息
解决方案:
将上述两个微服务的虚拟地址做统一即可、
总结:
RabbitMQ后台管理界面的使用是一个很重要的东西。