一、问题描述
近期在写一个RabbitMQ基于springboot的使用damon的时候,在启动消费者服务的时候一直发现连接不上RabbitMQ,很是纳闷,配置文件大概如下:
server:
port: 8182
servlet:
context-path: /
spring:
application:
name: consumer-service
main:
allow-bean-definition-overriding: true
#配置rabbitmq
rabbitmq:
host: 110.40.209.16
port: 5672
virtual-host: /
username: zhuoye
password: zhuoye5211314
listener:
simple:
prefetch: 1 #每次只能处理一个,处理完成才能获取下一个消息
acknowledge-mode: auto #自动进行消费者确认
retry:
enabled: true # 开启重试机制,本地重试
initial-interval: 1000ms #设置失败等待时长为1秒
multiplier: 1.2 #下次失败的等待时长倍数
max-attempts: 3 #最大重试次数3次
stateless: true
启动的时候 报错如下:
二、问题解决过程
第一反应就是检查配置文件,是不是配置文件哪里写的不对。首先就是检查ip地址、端口、账号、密码信息。然而,发现并没有问题。是不是近视了,在看一遍?还是没发现问题。而且生产者服务配置也是这样,但是都能够正确的把消息发送到RabbitMQ上的目标队列上面。
难道见鬼了?
我不死心,我重启服务、我重启服务…
我清除IDEA缓存重启…
我重启电脑!
奇迹没有发生,看来只能靠自己了。淡定、淡定!再仔细分析分析报错信息。
发现重点了!消费者服务启动日志里面,在尝试连的RabbitMQ是localhost,而不是我配置文件里面配置的host地址。这也就是配置文件没有生效!
迅速百度,springboot配置文件不生效的原因有哪些。百度里进行筛选有用的信息,发现大部分都是说pom文件有问题。那就检查检查pom文件哪里有问题。啊?我丢!打包方式竟然是pom!
而**pom类型通常用于组织和管理多个模块的项目,它本身不包含代码,只包含项目的配置信息和依赖关系。所以,它也就不会去寻找配置文件。**一般我们使用pom都是在项目聚合的时候,父工程的pom文件里面使用。比如,我这个包含两个服务的RabbitMQ使用的damon。
在父工程rabbitmq-demo的pom文件里面就需要使用 pom,并且指定子模块。这样,在父工程的pom文件里面的依赖才能够被两个子项目使用。
找到原因之后,我们就将消费者服务的pom文件中的pom改成jar,刷新pom文件,并clean项目。再次启动,成功连上RabbitMQ!
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
源码讲义、实战项目、讲解视频,并且后续会持续更新**
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-XiARugzz-1712862589150)]