Spring Cloud Config整合RabbitMQ 由于版本问题导致的坑
最近闲来无事就整合了一下Spring Cloud Config跟RabbitMQ,遇到了不少坑,记录一波。
先从安装MQ开始吧:
第一步:先安装Erlang,下载地址:https://www.erlang.org/ 安装步骤就省略了。
第二步:安装RabbitMQ,下载地址:https://www.rabbitmq.com/download.html 安装步骤同样省略,不会自行百度吧。
第三步:启动RabbitMQ:
1、进入到sbin目录下执行:rabbitmq-plugins enable rabbitmq_management
2、开启服务执行:rabbitmq-server
打开浏览器访问:http://localhost:15672
默认UserName:guest Password:guest
注意端口:15672
登录成功后记得添加一个用户,用作项目登录,添加用户时记得添加权限哦!!!!
到此为止算是完成一小步了。接下来就是项目配置了,分为server端和client端。
server端配置:
1.pom.xml:
1 <dependency> 2 <groupId>org.springframework.cloud</groupId> 3 <artifactId>spring-cloud-starter-bus-amqp</artifactId> 4 <version>2.2.1.RELEASE</version> 5 </dependency> 6 <dependency> 7 <groupId>org.springframework.cloud</groupId> 8 <artifactId>spring-cloud-bus</artifactId> 9 <version>2.2.1.RELEASE</version> 10 </dependency> 11 12 <dependency> 13 <groupId>org.springframework.cloud</groupId> 14 <artifactId>spring-cloud-stream-binder-rabbit</artifactId> 15 <version>3.0.3.RELEASE</version> 16 </dependency> 17 18 <dependency> 19 <groupId>org.springframework.boot</groupId> 20 <artifactId>spring-boot-starter-actuator</artifactId> 21 </dependency>
注意:Spring boot 2.0的改动较大,/bus/refresh全部整合到actuador里面了,所以 spring-boot-starter-actuator 不能少
2.application.properties:
1 spring.application.name=spring-cloud-config-server 2 3 eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/ 4 5 server.port=8040 6 7 # 配置git仓库的地址 8 spring.cloud.config.server.git.uri=https://github.com/isTeemo/spring-cloud-config.git 9 # git仓库地址下的相对地址,可以配置多个,用,分割。 10 spring.cloud.config.server.git.search-paths=neo-config 11 spring.cloud.config.label=master 12 # git仓库的账号 13 spring.cloud.config.server.git.username=14 # git仓库的密码 15 spring.cloud.config.server.git.password= 16 17 ## 刷新时,关闭安全验证 19 management.endpoints.web.exposure.include=bus-refresh 20 spring.cloud.bus.refresh.enabled=true 21 ## 开启消息跟踪 22 #spring.cloud.bus.trace.enabled=true 23 24 spring.rabbitmq.host=localhost 25 spring.rabbitmq.port=5672 26 spring.rabbitmq.username=admin 27 spring.rabbitmq.password=admin
注意:
a.RabbitMQ的端口为:15672 ,但是这里配置必须写成:5672。
b.刷新关闭安全验证配置,在Spring boot 1.x用:management.security.enabled=false,但是2.0后得用:management.endpoints.web.exposure.include=bus-refresh
c.请求刷新地址:1.x版本为:http://ip:端口/bus/refresh(如:http://localhost:8040/bus/refresh),2.0以后为:http://ip:端口/actuator/bus-refresh(如:http://localhost:8040/actuator/bus-refresh),特别注意:两个都是POST请求
接下来是client端,:
1.pom.xml(跟server端一样):
1 <dependency> 2 <groupId>org.springframework.cloud</groupId> 3 <artifactId>spring-cloud-starter-bus-amqp</artifactId> 4 <version>2.2.1.RELEASE</version> 5 </dependency> 6 <dependency> 7 <groupId>org.springframework.cloud</groupId> 8 <artifactId>spring-cloud-bus</artifactId> 9 <version>2.2.1.RELEASE</version> 10 </dependency> 11 12 <dependency> 13 <groupId>org.springframework.cloud</groupId> 14 <artifactId>spring-cloud-stream-binder-rabbit</artifactId> 15 <version>3.0.3.RELEASE</version> 16 </dependency> 17 18 <dependency> 19 <groupId>org.springframework.boot</groupId> 20 <artifactId>spring-boot-starter-actuator</artifactId> 21 </dependency>
注意:Spring boot 2.0的改动较大,/bus/refresh全部整合到actuador里面了,所以 spring-boot-starter-actuator 不能少
2.bootstrap.properties:
1 spring.application.name=spring-cloud-config-client 2 eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/ 3 server.port=8041 4 5 6 spring.cloud.config.name=neo-config 7 spring.cloud.config.profile=dev 8 spring.cloud.config.label=master 9 10 spring.cloud.config.discovery.enabled=true 11 spring.cloud.config.discovery.serviceId=spring-cloud-config-server 12 13 ## 刷新时,关闭安全验证 14 management.endpoints.web.exposure.include=bus-refresh 15 ## 开启消息跟踪 16 spring.cloud.bus.trace.enabled=true 17 18 spring.rabbitmq.host=localhost 19 spring.rabbitmq.port=5672 20 spring.rabbitmq.username=admin 21 spring.rabbitmq.password=admin
注意点跟server端一样。
特别注意:client端在获取配置的方法上需要加上 @RefreshScope 注解。
其实这是坑都是自己不读官方文档导致的,作为一个程序猿,应该养成多逛逛官方网站的习惯,毕竟现在的东西迭代速度非常快,一不小心就落后了。
另外,我在看其他大神文章时看到一个问题,由于本人刚刚接触这个东西,所以没有发现,也不晓得是不是真的,但是还是记录一下吧,希望对遇到的人有用。