繁体   English   中英

如何使用交互式查询存储和全局存储实现处理单个主题的 Kafka Streams 拓扑

[英]How to implement Kafka Streams topology that process single topic with interactive queries store and global store

我正在尝试实现 Kafka Streams,它将单个主题流视为具有交互式查询可能的全局数据库。 所以我想要:

  1. 记录的全局存储(GlobalKTable、KeyValueStore)

  2. 可查询存储,允许我获得交互式查询的结果(最大)

交互式查询必须计算记录字段之一的全局最大值:

 KStream<String, TercUnitRecord> recordsStream = topologyBuilder.stream(topicName);
 KTable<String, Long> lastUpdateStore = recordsStream.mapValues(record -> record.getLastUpdate())
                .selectKey((key, value) -> "lastdate")
                .groupByKey(Grouped.with(Serdes.String(), Serdes.Long()))
                .reduce((maxValue, currValue) -> maxValue.compareTo(currValue) == 1 ? maxValue : currValue,
 Materialized.as("terc-lastupdate"));

但是,我面临的问题是我无法在一个 Kafka Streams 实例中使用与源相同的单个主题。 我已经进行了研究,我发现这样做的唯一方法是通过多个 KafkaStreams 实例,但我不确定这是实现这一目标的正确且唯一的方法。 有任何想法吗?

我为每个任务使用了多个 KafkaStreams 实例并且它工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM