我有一个Kafka Stream应用,该应用在主事件主题中进行一些处理,并且还有一个副主题 用于将规则集应用于主要事件主题。
到目前为止,该应用作为单个实例运行,何时运行 已应用规则,为其他处理操作员(主要使用者)设置了静态变量以继续 按预期运行评估规则。这是必要的,因为规则流将被写入单个分区,具体取决于 在规则键文字上<“ MODE”,value>,因此(通过静态变量)所有其他任务 参与人员会意识到这一变化。
显然,尽管在将应用程序部署到多个节点时,此方法无法正常工作,因为 单个使用者组(例如来自两个实例应用)将导致仅一个实例应用将其静态变量设置为 正确的值,而另一个实例应用程序永远不会使用该规则值(也可以将每个实例应用程序设置为 不同的组ID会导致重复使用主要主题而产生不良后果)
另一方面,将规则主题用作全局表的解决方案将导致进行主处理 运算符每次使用事件时都会查询全局表,以检索最新规则。
在该主题中引入值以执行某些操作时,是否可以使用某种全局表侦听器 回调代码并设置一个静态变量?
是否有更好的/替代方法来解决此问题?
答案 0 :(得分:1)
您可以使用GlobalKTable
代替addGlobalStore()
来执行自定义代码。