dyc87112 / blog-comments

5 stars 1 forks source link

Spring Cloud构建微服务架构(七)消息总线 | 程序猿DD #138

Open dyc87112 opened 6 years ago

dyc87112 commented 6 years ago

http://blog.didispace.com/springcloud7/

先回顾一下,在之前的Spring Cloud Config的介绍中,我们还留了一个悬念:如何实现对配置信息的实时更新。虽然,我们已经能够通过/refresh接口和Git仓库的Web Hook来实现Git仓库中的内容修改触发应用程序的属性更新。但是,若所有触发操作均需要我们手工去维护Web Hook中的应用位置的话,这随

hhecho commented 6 years ago

博主你好,有个问题想请教,当我修改了git仓库中的端口号和数据库连接配置后,请求/bus/refresh,打印客户端的配置是修改后的,但是并没有生效,仍需要重启服务才能生效,有什么好的解决方法吗?

Xiaojiju commented 6 years ago

@hhecho 博主你好,有个问题想请教,当我修改了git仓库中的端口号和数据库连接配置后,请求/bus/refresh,打印客户端的配置是修改后的,但是并没有生效,仍需要重启服务才能生效,有什么好的解决方法吗?

要在需要刷新地方加上 @RefreshScope 注解,因为其他客户接收到广播后,会通过这个注解找属性进行刷新值;归根到底就是应用仅仅只是接收到广播说“你该刷新了”,然后进行spring cloud的/refresh操作,然后通过@RefreshScope注解寻找对应属性进行重新赋值;

iatneh commented 5 years ago

如果在Config Server中也引入Spring Cloud Bus,假设使用的rabbitmq地址是A, Client 生产/测试环境都从一个configServer中读取配置, Client中也有用到rabbitmq,并且地址分别是生产A、测试B, 生产环境下还好说 刷新Server,Client中的值会跟着变,测试环境下就不行了。

如果生产和测试的ConfigServer分开使用,那Client中生产/测试要分别配置不同的Config Server地址,本来Git里已经维护了不同环境下的配置,在Client中又要分别维护不同环境下的ConfigServer地址,这样感觉很麻烦

如果想在ConfigServer中使用 Bus 有其他好的解决方式吗