由同一应用程序的多个 kafka 流实例读取规则集 topic/partition

Read ruleset topic/partition by multiple kafka stream instances of the same app

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

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

显然,当将应用程序部署到多个节点时,这种方法无法工作,因为有一个 单个消费者组(来自例如两个实例应用程序)将导致只有一个实例应用程序将其静态变量设置为 正确的值和另一个实例应用程序从不使用该规则值(还将每个实例应用程序设置为 不同的组 id 会导致消耗主题两次的不良副作用)

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

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

是否有 better/alternative 解决此问题的方法?

您可以回退到允许您执行自定义代码的 addGlobalStore(),而不是 GlobalKTable