总线"/>
Bus 消息总线
代码:.git
简介:
- spring cloud bus 使用轻量级的消息中间件将分布式的节点连接起来,可以用于广播配置文件的更改或者服务的监控管理。关键的思想就是,消息总线可以为微服务做监控,也可以实现应用程序之间相互通信。
- spring cloud Bus 可选的消息组件包括 RabbitMQ和Kafka
- 经常和config一起使用,通过cmd curl发送完post请求后,只能一个客户端刷新得到最新配置文件,如果客户端多时,就很麻烦,bus可以解决这个问题,只需要发送一跳post请求,所有客户端都能通过刷新得到最新外部配置文件。
这里是承接Config 分布式配置中心文章,解决文章中遗留的发一次请求只能一个client更新的到最新的配置文件。
bus搭建
将config-consumer改造为client
config-provider的bootstrap.yml复制到config-consumer
#bootstrap优先级更高#配置config-server地址
#配置获取配置文件的名称等信息spring:cloud:config:#配置config-server地址#uri: http://localhost:9527name: config #文件名profile: dev #开发环境label: master #分支#从注册中心去寻找config-server地址discovery:enabled: trueservice-id: CONFIG-SERVER#暴露端点
management:endpoints:web:exposure:include: refresh # 或者 * 也可以代替,表示全部暴露不安全
OrderController注入
将获取到的外部配置文件输出到web
@RefreshScope@Value("${gao}")
private String gao;goods.setTitle(goods.getTitle()+"--"+gao);
导入pom.xml
<!--feign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!-- config client--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency>
运行:
编写bus
config-server
引入pom.xml
<!--bus--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
添加配置
server:port: 9527spring:application:name: config-servercloud:config:server:git:uri: .git #远程仓库的地址label: master#配置rabbitmq信息rabbitmq:host: localhostport: 5672username: guestpassword: guestvirtral-host: /
eureka:client:service-url:defaultZone: http://localhost:8761/eureka # 注册#暴露bus的刷新点
management:endpoints:web:exposure:include: 'bus-refresh'
config-provider
<!--bus--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency>
bootstrap.yml
#bootstrap优先级更高#配置config-server地址
#配置获取配置文件的名称等信息spring:cloud:config:#配置config-server地址#uri: http://localhost:9527name: config #文件名profile: dev #开发环境label: master #分支#从注册中心去寻找config-server地址discovery:enabled: trueservice-id: CONFIG-SERVER#配置rabbitmq信息rabbitmq:host: localhostport: 5672username: guestpassword: guestvirtral-host: /#暴露端点
management:endpoints:web:exposure:include: refresh # 或者 * 也可以代替,表示全部暴露不安全
config-consumer
pom.xml
<!--bus--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency>
bootstrap.yml
#bootstrap优先级更高#配置config-server地址
#配置获取配置文件的名称等信息spring:cloud:config:#配置config-server地址#uri: http://localhost:9527name: config #文件名profile: dev #开发环境label: master #分支#从注册中心去寻找config-server地址discovery:enabled: trueservice-id: CONFIG-SERVER#配置rabbitmq信息rabbitmq:host: localhostport: 5672username: guestpassword: guestvirtual-host: /#暴露端点
management:endpoints:web:exposure:include: refresh # 或者 * 也可以代替,表示全部暴露不安全
application.xml
server:port: 9000eureka:instance:hostname: localhostclient:service-url:defaultZone: http://localhost:8761/eureka # 注册spring:application:name: config-consumer #设置当前应用的名称。将来会在eureka中application显示,将来需要使用该名称来获取路径# 开启feign对hystrix的支持
feign:hystrix:enabled: true
结果:
发送后 client端 consumer和provider通过刷新就能获取到最新的外部配置文件
更多推荐
Bus 消息总线
发布评论