将自定义kafka使用者与Spring云配置客户端集成

时间:2019-06-08 13:07:57

标签: spring-cloud spring-kafka spring-cloud-stream spring-cloud-config

我们正在使用spring config客户端动态刷新属性。我们在类路径上添加了spring-cloud-starter-bus-kafka,一切正常。所有这些依赖项的Pom版本是2.X。

我想要做的是,删除spring-cloud-starter-bus-kafka并添加我的自定义代码以获取使用者事件并刷新上下文,然后使用云配置客户端刷新属性。我相信Spring在某个地方打电话给ConfigServicePropertySourceLocator.locate。基本上,我只想复制Spring在spring-cloud-starter-bus-kafka中所做的事情,以使实时刷新属性成为可能。

之所以这样做,是因为我在内部使用了较旧版本的kafka-clients。我们有一个本地版本,它支持加密,不支持加密。由于spring-cloud-starter-bus-kafka正在使用2.x版本的kakfa-clients,而我们的家庭版本尚未准备就绪,因此问题来了。因此,它们中的任何一个都在某个时间点工作。

有人可以告诉我一些指示,以了解如何使用kafka的刷新事件并刷新属性吗?我不认为这太复杂了。应该消耗卡夫卡事件,并在某个地方调用ConfigSourceLocator刷新属性。

1 个答案:

答案 0 :(得分:3)

比这更简单。如果您查看RefreshListener类,您会发现它所做的只是

    Set<String> keys = this.contextRefresher.refresh();
    log.info("Received remote refresh request. Keys refreshed " + keys);

contextRefresherorg.springframework.cloud.context.refresh.ContextRefresher的地方。

这将触发自动处理查找配置的代码。