这部分内容是和前面的config连在一起的。为了突出显示,只展示新加的部分。
记住一定要保证rabbit的运行,不然3355和3366都连不上
rabbitmq环境
-
erlang
http://erlang.org/download/otp_win64_21.3.exe
-
rabbit
https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.14/rabbitmq-server-3.7.14.exe
-
开启插件并启动
#在rabbit安装目录下的sbin文件夹cmd # 启动rabbitmq_managemen是管理后台的插件、我们要开启这个插件才能通过浏览器访问登录页面 rabbitmq-plugins enable rabbitmq_management # 启动rabbitmq rabbitmq-server start #访问登录页面 用户名和密码都是guest http://localhost:15672
0消息总线
先回顾遗留问题:github修改后,curl -X POST “http://localhost:3355/actuator/refresh” ,每次都需要针对具体的端口来发送请求。
我们想一步到位,可以每次修改发一次post,但不能每个端口发一次。
现在有两种架构:要么使用客户端通知全部,要么使用服务端通知全部。
我们选后者:功能单一,降低耦合。
0添加3366客户端作为对比
rabbitmq的位置不一样,服务端的是打头,客户端的是和cloud齐平
1.给3344服务端添加支持
-
pom
<!--rabbitmq的支持--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>
-
yaml
找到rabbitmq
rabbitmq: host: localhost port: 5672 username: guest password: guest
2两个客户端支持
不同点:1.服务端是application.yml,两个客户端是bootstrap.yml
2. 服务端的rabbitmq是打头,客户端是和cloud同级
3post开启通知
1定点通知
上面的都是服务器广播到所有配置客户端,可以利用post来指定这次具体通知谁
curl -X POST "http://localhost:3344/actuator/bus-refresh/config-client:3355"
总结一下测试方法
三种post请求
-
点对点更新(端口)
curl -X POST "http://localhost:3355/actuator/refresh"
-
总线更新
curl -X POST "http://localhost:3344/actuator/bus-refresh"
-
总线指定更新
curl -X POST "http://localhost:3344/actuator/bus-refresh/config-client:3355"
查看效果
分别在端口上看就好了,比如 localhost:3366/configInfo