首先消息总线有两种配置方式
一种是把更新消息Post请求发给其中的一个服务端(client),再由服务端传递给其他的服务端。
另一种就是把消息Post请求发给注册端(server),注册端口在发给所有的服务端(client)
我们选择第二种配置方式
原因一:这样可以减轻服务端的压力
原因二:这样的逻辑更加清晰,减少耦合
原因三:破坏了服务的单一性,对等性,而且网络地址经常变化,而通过网络控制通知则需要更多节点。
在这之前我们配置了erlang和rabbitmq
erlang的版本是23.0
rabbitmq的版本是3.8.8
全部安装完毕后通过cmd:cd H:\RabbitMQ Server\rabbitmq_server-3.8.8\sbin
到所安装的rabbitmq的sbin文件夹输入rabbitmq_plugins enable rabbitmq_management
上面运行完毕后可以在任务栏看到rabbitmq-server,点击rabbitmq——start
之后可以访问http://localhost:15672来查看rabbit是否运行成功
首先我们对注册端(server)进行配置
首先是pom端
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
然后是application.yml
server:
port: 3344
spring:
application:
name: cloud-config-center
cloud:
config:
server:
git:
uri: https://github.com/baby0o0/spring-cloud-git.git
search-paths:
- spring-cloud-git
label: master
rabbitmq:
host: localhost
post: 5672
username: guest
password: guest
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
management:
endpoints:
web:
exposure:
include: "bus-refresh"
rabbitmq当中的5672是运行时被rabbitmq访问的端口,而15672是浏览器访问的端口
management把bus-refresh暴露出来
其他和全局配置config相同可以去看SpringCloud-Config简单配置
之后是服务端(client)
服务端其他也和SpringCloud-Config简单配置相同
只有在application.yml中添加新的代码
spring:
application:
name: config-client
cloud:
config:
label: master
name: config
profile: dev
uri: http://localhost:3344
rabbitmq:
host: localhost
post: 5672
username: guest
password: guest
在Spring中添加了rabbitmq其他相同
为了观察全局配置我们复制了服务端(3355)改名为(3366)
配置完成后先运行eureka(7001,7002)
然后运行注册端(server)3344在运行服务端(client)3355和3366
修改github把config-dev中版本号修改为5
然后调用3344可得
但是因为没有通知所以3355和3366配置并没有更新
我们可以通过postman通过post请求访问http://localhost:3344/actuator/bus-refresh
返回1说明成功,3355和3366已经更新
如果是想要定点更新http://localhost:3344/actuator/bus-refresh/{在链接里面输入}
输入的端口号将会更新