spring cloud bus 配置不能同步刷新

在使用Spring Cloud Config进行动态配置刷新时,通过Spring Cloud Bus结合Kafka作为总线遇到配置无法同步的问题。该问题源于不同项目中`spring-cloud-starter-stream-kafka`版本不一致,导致消息通道不匹配。当配置更改并触发事件时,由于版本差异,事件无法正确传递到消息中间件的主题`springCloudBus`,进而影响config-client的配置刷新。解决方案是确保所有项目中相关依赖版本的一致性,确保消息通道正常工作。
摘要由CSDN通过智能技术生成

项目
在用spring cloud config做动态刷新,用spring cloud bus +kafka 做总线,
config 配置服务项目
config-client 同步配置项目
问题:
修改配置,然后在 config 主机调用接口http://localhost:9091/actuator/bus-refresh刷新配置时,config-client的配置依然没有改变。
解决方法:
两个项目的jar包(spring-cloud-starter-stream-kafka)版本不一致导致的。
config的版本是2.1.2
config-client 2.1.1
一开始配的是

       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-kafka</artifactId>
        </dependency>

就不需要配spring-cloud-starter-stream-kafka和 spring-cloud-bus
但是发现spring-cloud-starter-bus-kafka这个版本虽然一致,但是包含的两个jar包版本还是不一致。
在这里插入图片描述
通过解决这次问题发现
当配置改变后会触发一个事件,该事件会往消息中间件topic为springCloudBus写入一个刷新事件RefreshRemoteApplicationEvent。
而监听到topic为springCloudBus的config-client 就会去触发本地一个刷新事件。
这次问题是因为两个jar包版本不一致导致topic也不一致。

梳理一下逻辑
spring cloud stream 在和消息中间件交互的时候增加了一层就是用绑定器binder来处理,这样可以抽象地和消息中间件交互。
在这里插入图片描述
中间传递消息的就是抽象出来的消息通道channel:inputs和outputs
消息给不同的消费者抽象出不同的主题topic。
spring cloud bus 通过channel:springCloudBusOutput 把消息写到总线,通过channel:springCloudBusInput读取消息总线
spring cloud config 刷新配置事件的topic是springCloudBus

关键类 BusAutoConfiguration

@Autowired
	@Output(SpringCloudBusClient.OUTPUT)
	public void setCloudBusOutboundChannel(MessageChannel cloudBusOutboundChannel) {
   
		this
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值