apache-kafka-streams - 通过同一应用的多个 kafka 流实例读取规则集主题/分区
问题描述
我有一个 Kafka Stream 应用程序,它在主要事件主题中进行一些处理,并且我还有一个用于将规则集应用于主要事件主题的辅助主题。
到目前为止,该应用程序作为单个实例运行,并且当应用规则时,为其他处理操作员(主要主题消费者)设置了一个静态变量,以继续按预期操作评估规则。这是必要的,因为规则流将被写入单个分区,具体取决于规则键字面量,例如 <"MODE", value>,因此通过这种方式(通过静态变量)所有其他涉及的任务都会知道更改。
显然,当将应用程序部署到多个节点时,这种方法不起作用,因为只有一个消费者组(例如来自两个实例应用程序)会导致只有一个实例应用程序将其静态变量设置为正确的值,而另一个实例应用程序从不使用该规则值(还将每个实例应用程序设置为不同的组 id 会导致使用主题两次的不良副作用)
另一方面,将规则主题用作全局表的解决方案将导致主处理运算符在每次该运算符使用事件时查询全局表以检索最新规则。
当在该主题中引入一个值来执行一些回调代码并设置一个静态变量时,是否可以使用某种全局表侦听器?
是否有更好/替代方法来解决此问题?
解决方案
代替 a GlobalKTable
,您可以回退到addGlobalStore()
允许您执行自定义代码的地方。
推荐阅读
- ruby-on-rails - 使用 docker 和 nginx 部署时 ActiveStorage image_tag 主机名错误
- asp.net-mvc - 从使用 Summernote 存储的数据库中检索数据时的问题意味着在 SQL Server 中以 HTML 格式存储
- vue.js - Vue Router - 使用 Vue 2 Composition API 获取路由参数
- ruby-on-rails - 创建 Factorybot 以返回包括关联实例的实例
- php - 我的 WooCommerce PHP 代码片段排除产品 ID 不起作用 - 请帮助我
- angular - Firebase 托管重定向附加应用路由重定向
- sql-server - SQL Server 2012 - 我尝试使用 2 列数据透视,但 SUM 函数没有给出预期结果
- roslyn-code-analysis - 是否可以仅为某些文件夹/文件(不是整个项目)启用 Roslyn 代码分析器?
- javascript - 在 React 中注册用户
- python - pd.info() 有 184 列