消息总线
动态配置刷新,通过配置中心向MQ服务发送一个刷新指令,其他配置中心客户端接收指令,执行配置刷新。
1.修改添加依赖(2.3.4.9)
bus
rabbit
binder-rabbit
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-bus</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
2.修改09,添加actuator的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
3.修改09的yml配置
暴露bus-refresh刷新路径
management:
endpoints:
web:
exposure:
include: bus-refresh
rabbitmq连接配置
rabbitmq:
host: 192.168.64.140
port: 5672
username: admin
password: admin
virtual-host: /
4.修改2,3,4的yml配置,添加rabbitmq连接
修改config目录的配置文件,提交推送到远程仓库
5. 排查错误
先启动05,09 02,03,04 06 07,08
2,3,4 控制台必须有连接6001的日志
6.Rabbitmq检查
二、配置刷新测试
连接之前先在浏览器连接一下
1.http://localhost:6001/actuator/bus-refresh 提交一个post请求
2.观察2,3,4控制台是否重新连接6001,刷新配置
3.指定的模块刷新(user-service )加一个user-service子路径 ,选择路由模式,主题模式
三、消息服务案列
1.bus配置刷新
刷新指令消息 到Rabbitmq,其他模块接收执行,
测试03的配置添加新用户,然后让03的刷新配置
1.修改userserviceimpl ,添加@refreshScope
如果不添加这个注解,即时刷新到新的配置,也不会向对象重新注入新配置
2.重启03
3.修改config目录的user-service-dev,添加一个99用户
4.提交推送到远程仓库
5.让03刷新配置
### 指定的模块刷新 POST http://localhost:6001/actuator/bus-refresh/user-service
6.访问新的用户数据
http://localhost:3002/user-service/99
四、向eureka注册正确的ip地址,选择正确网卡,注册ip不注册主机名
选择正确网卡
1.bootstrap.yml配置
spring:
cloud:
inetutils:
ignored-interfaces: # 忽略的网卡
- VM.* # vm开头, .是任意字符, *0到多个
preferred-networks: # 要是用的网卡的网段
- 192\.168\.0\..+ # \.是普通的.字符, .+任意字符1到多个
2. 注册ip,而不注册主机名
application.yml
eureka:
instance:
prefer-ip-address: true # 使用ip进行注册
instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port} # 界面列表中显示的格式也显示ip (可选)