spring cloud
Last updated
Was this helpful?
Last updated
Was this helpful?
在任意配置了该依赖的客户端执行/bus/refresh
即可以将配置更新消息通知给所有客户端。 如果需要指明具体更新配置的客户端则使用/bus/refresh?destination=customers:8000
destination
的值是各个微服务的ApplicationContext ID,关于ApplicationContext ID可以在org.springframework.boot.context.ContextIdApplicationContextInitializer 类的getApplicationId() 方法中看到。默认应该是${spring.application.name}:${server.port}
启动服务时虽然采用 --spring.profiles.active = peer1 指定了配置文件,但还是会从 application.properties 中取值,将application.properties的
注释掉或者 在 application-peer1.properties 与 application-peer2.properties 中显示 指定 这两个属性值为true即可。
Spring Boot Admin
是一个管理和监控Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端,通过HTTP或者使用 Eureka注册到admin server中进行展示,Spring Boot Admin UI部分使用AngularJs将数据展示在前端。
提供一个对外的统一api接口,使外部的服务可以通过正常的http请求来访问注册到服务中心的服务 请求方式:{网关的host}:{port}/{注册到服务中心的application-name 小写}/REQUEST PATH
eg:http://koyou.top:8020/customer-service/getNeoHello
可以使用消息总线,即借助mq来分发通知配置文件的修改。 也可以不使用总线,则每个client需要手动触发/refresh
事件来重新获取配置
1.客户端添加spring-boot-starter-actuator
依赖,该包具有一套完整的监控,其中包括一个/refresh
功能 2.需要给加载变量的类上面加载@RefreshScope
,在客户端执行/refresh
(POST请求)的时候就会更新此类下面的变量值 3.添加配置management.security.enabled=false
关闭安全认证 4.配置变更后,客户端以post请求的方式来访问http://localhost:8002/refresh
(curl -X POST http://localhost:8002/refresh
)
需要刷新消息的客户端添加依赖,该包提供了消息的发送和接受
spring cloud bus 扩展消息总线方法
文中存在一个问题,使用这种继承AbstractBusEndpoint
和BusAutoConfiguration
的方式来发送message会导致消息重复接收,以及导致原有的消息总件功能失效, 因此应该采用其它方式来发送消息,如下
(tag: spring boot 配置文件加载顺序) spring cloud 属性加载顺序:会按照下图的优先级加载,如果第一层没有配置key的值则去第二层查找,如果配置了则不会继续查找该key的值, 即低优先级的不会覆盖高优先级的值,只会补充没有配置的。
服务提供者配置