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 注解。

其实这是坑都是自己不读官方文档导致的,作为一个程序猿,应该养成多逛逛官方网站的习惯,毕竟现在的东西迭代速度非常快,一不小心就落后了。

另外,我在看其他大神文章时看到一个问题,由于本人刚刚接触这个东西,所以没有发现,也不晓得是不是真的,但是还是记录一下吧,希望对遇到的人有用。

posted @ 2020-04-03 17:45  刘猿外  阅读(1222)  评论(0编辑  收藏  举报