我有一个Kafka Stream应用程序,该程序在主事件主题中进行一些处理,还有一个副主题,用于将规则集应用于主事件主题。
到目前为止,该应用程序已作为单个实例运行,并且当应用规则时,将为其他处理操作员(主要主题使用者)设置一个静态变量,以继续按预期运行评估规则。这是必需的,因为规则流将根据规则键文字(例如<“ MODE”,value>)写入单个分区,因此,所有其他任务(通过静态变量)都将知道更改。
显然,尽管在将应用程序部署到多个节点时,此方法行不通,因为只有一个消费者组(例如,来自两个实例应用程序)会导致一个实例应用程序将其静态变量设置为正确的值,而另一个实例应用程序却从不使用该规则值(还将每个实例应用程序设置为不同的组ID也会导致两次使用主主题而产生不良后果)
另一方面,将规则主题用作全局表的解决方案将导致主处理运算符每次在该运算符消耗事件以查询最新规则时就查询全局表。
当在该主题中引入值以执行一些回调代码并设置静态变量时,是否可以使用某种全局表侦听器?
是否有更好/替代的方法来解决此问题?
可以使用而不是代替GlobalKTable
,可以addGlobalStore()
执行自定义代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句