通过同一应用程序的多个kafka流实例读取规则集主题/分区

时间:2019-11-18 14:24:43

标签: apache-kafka-streams

我有一个Kafka Stream应用,该应用在主事件主题中进行一些处理,并且还有一个副主题 用于将规则集应用于主要事件主题。

到目前为止,该应用作为单个实例运行,何时运行 已应用规则,为其他处理操作员(主要使用者)设置了静态变量以继续 按预期运行评估规则。这是必要的,因为规则流将被写入单个分区,具体取决于 在规则键文字上<“ MODE”,value>,因此(通过静态变量)所有其他任务 参与人员会意识到这一变化。

显然,尽管在将应用程序部署到多个节点时,此方法无法正常工作,因为 单个使用者组(例如来自两个实例应用)将导致仅一个实例应用将其静态变量设置为 正确的值,而另一个实例应用程序永远不会使用该规则值(也可以将每个实例应用程序设置为 不同的组ID会导致重复使用主要主题而产生不良后果)

另一方面,将规则主题用作全局表​​的解决方案将导致进行主处理 运算符每次使用事件时都会查询全局表,以检索最新规则。

在该主题中引入值以执行某些操作时,是否可以使用某种全局表侦听器 回调代码并设置一个静态变量?

是否有更好的/替代方法来解决此问题?

1 个答案:

答案 0 :(得分:1)

您可以使用GlobalKTable代替addGlobalStore()来执行自定义代码。