我无法理解如何将数据保存到globalKTable。 我尝试使用
在java中创建GlobalKTable
GlobalKTable globalTable = builder.globalTable(inputTopic, Materialized.>as("global-store"));
在此之后,我找不到任何直接将数据存储到此GlobalKTable的示例。 可以用于连接或流的任何地方。
答案 0 :(得分:4)
由于每个Stream应用程序实例均加载全部GlobalKTable
数据,因此默认情况下它将禁用记录到changelog
主题,并且GlobalKTable
使用输入主题作为还原过程的更改日志源(以达到容错性),因此更改全局存储没有任何意义,而您不能这样做。
您可以使用ProcessorContext.getStateStore("global-store")
获得对Processor API中全局状态的只读访问权限,而无需将存储添加到Processor
。
一种实现此目的的方法是将要进行的更新推送到inputTopic
,以便它在所有应用程序实例中更新每个GlobalKTable。
答案 1 :(得分:2)
我无法理解如何将数据保存到globalKTable。 [...]我找不到任何直接将数据存储到此GlobalKTable的示例。
今天,您不能直接写到GlobalKTable
。您只能通过将事件/记录/消息写入填充全局表的主题来间接更改全局表。