一、能干吗?
二、什么是公共汽车?
三.动态更新全球广播
注意:首先必须具备良好的RabbitMQ环境
展现广播效果,增加复杂度,以3355为模板再制作一个3366
1、全新云配置客户端- 3366
1 )销售订单
cloud2020
com.atguigu.springcloud
1.0-快照
4.0.0
云配置客户端- 3366
8
8
org.springframework.cloud
spring-cloud-starter-config
org.springframework.cloud
spring-cloud-starter-Netflix-eureka-client
com.atguigu.springcloud
云API公共
${project.version}
org.spring帧work.boot
spring-boot-starter-web
org.spring帧work.boot
spring-boot-starter-actuator
org.spring帧work.boot
spring-boot-devtools
运行时间
真的
org.projectlombok
lombok
真的
org.spring帧work.boot
spring-boot-starter-test
测试
pom文件
2 ) YML
服务器:
port: 3366
spring:
3: APP
name :配置客户端
cloud:
config:
Label:大师
name: config
简档: dev
uri :http://localhost :3344
eureka:
客户端:
服务-URL:
efault zone :3358 eureka 7001.com :7001/eureka,http://eureka 7002.com :7002/eureka
管理:
endpoints:
web:
exposure:
include: '* '
3 )主启动
@EnableEurekaClient
@ springbootapplicationpublicclassconfigclientmain 3366 { publicstaticvoidmain { string [ ] args } }
spring application.run (configclientmain 3366.class,args );
}
}
4 )控制器
@ rest控制器
@ refreshscopepublicclassconfigclientcontroller {
@value((${server.port} )专用服务器端口;
@value((${config.info} )私有配置信息;
@getmapping(/configinfo ) ) publicString getConfigInfo ) ) return ' server port : ' server port 'tnnconfig
}
}
2、设计思想
1 )使用消息总线启动一个客户端/bus/refresh以更新所有客户端的配置
2 )通过消息总线触发单个服务端ConfigServer的/bus/refresh端点,更新所有客户端的配置(更推荐) () ) ) ) ) )。
图2的框架显然更合适,图1不合适的理由如下
打破了微服务职责的单一性。 微服务本身是一个业务模块,因此不应该承担配置创新的责任
p>破坏了微服务各节点的对等性有一定的局限性。例如,微服务在迁移时,它的网络地址常常会发生变化,此时如果想要做到自动刷新,那就会增加更多的修改
3、代码改造
1)给cloud-config-center-3344配置中心服务端添加消息总线支持
POM
org.springframework.cloud
spring-cloud-starter-bus-amqp
增加mq依赖
YML
server:
port:3344spring:
application:
name: cloud-config-center
cloud:
config:
server:
git:
uri: https://github.com/jwen1994/sprincloud-config.git
search-paths:- springcloud-config
username:526464869@qq.com
password: wj_870096
label: master
rabbitmq:
host:192.168.216.130
port: 5672username: admin
password: password
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
management:
endpoints:
web:
exposure:
include: "bus-refresh"
2)给cloud-config-center-3355客户端添加消息总线支持
POM
org.springframework.cloud
spring-cloud-starter-bus-amqp
增加mq依赖
YML
server:
port:3355spring:
application:
name: config-client
cloud:
config:
label: master
name: config
profile: dev
uri: http://localhost:3344
rabbitmq:
host: 192.168.216.130
port: 5672username: admin
password: password
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
management:
endpoints:
web:
exposure:
include:"*"
3)给cloud-config-center-3366客户端添加消息总线支持
POM
org.springframework.cloud
spring-cloud-starter-bus-amqp
增加mq依赖
YML
server:
port:3366spring:
application:
name: config-client
cloud:
config:
label: master
name: config
profile: dev
uri: http://localhost:3344
rabbitmq:
host:192.168.216.130port:5672username: admin
password: password
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
management:
endpoints:
web:
exposure:
include:"*"
4、测试
修改Github上配置文件增加版本号
curl -X POST "http://localhost:3344/actuator/bus-refresh"
一次发送,处处生效
四、动态刷新定点通知
不想全部通知,只想定点通知
只通知3355
不通知3366
公式:http://配置中心IP地址/actuator/bus-refresh/{destination}
/bus/refresh请求不再发送到具体的服务实例上,而是发给config server并通过destination参数类指定需要更新配置的服务或实例
我们这里以刷新运行在3355端口上的config-client为例
curl -X POST "http://localhost:3344/actuator/bus-refresh/config-client:3355"
五、总结