为什么需要springcloud bus
微服务系统有很多个服务,一个服务可能有多个实例,每次更改配置都要把所有的服务实例重启,很麻烦,想要解决问题是如果更改配置之后,不需要重启应用就能动态刷新配置。
使用springcloud bus需要一个消息中间件,可以用rabbitmq。
工作原理
使用了springcloud bus,config server会对外提供一个HTTP接口,就是bus/refresh,访问这个接口,config server就会把更新配置的信息发送到rabbitmq当中,客户端通过订阅消息队列的服务,就知道需要跟新自己的 配置信息了。这个bus/refresh接口是由远程的Git来访问的,当更改远程Git仓库的地址时,发送一个Post请求访问这个接口,通知配置更改了。Git服务器一般都提供wabhook的功能,把接口的地址配置上去就可以了。
如何使用
在config server的pom文件中引入依赖,
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
注意版本springcloud版本是Finchley.BUILD-SNAPSHOT,springboot的版本是2.0.0BUILD-SNAPSHOT
内网穿透
由于在本地测试8080端口,而在远端Git仓库配置webhook的地址需要外网地址,所以使用natapp提供的内网穿透功能,这个软件有免费的隧道可以使用功能,注册一下可以获得免费的隧道。可以得到一个外网地址,映射到本地的localhost:8080端口。