如何从没有密钥的主题加载GlobalKTable?

时间:2018-11-25 11:47:20

标签: apache-kafka apache-kafka-streams

当我需要将没有键的主题作为kTable加载时,我通常将主题作为kStream使用,将其重新映射以提取键/值,然后使用{{1} },以建立kGroupedStream及其商店:

kTable

现在,我们开始划分主题,我尝试利用KStream<String, String> mappingStream = builder .stream(TOPIC_MAPPING_IN, consumed) .map( (key, value) -> KeyValue.pair( value.get("my_key").asText(), value.get("my_value").asText()) ); KGroupedStream<String, String> mappingGroupedStream = mappingStream.groupByKey(Serialized.with(Serdes.String(),Serdes.String() )); KTable<String,String> mappingTable = mappingGroupedStream.aggregate( () -> "", //initializer (aggKey, newValue, aggValue) -> newValue, Materialized.<String, String, KeyValueStore<Bytes, byte[]>>as(MY_MAPPINGS_STORE) .withValueSerde(Serdes.String()) .withKeySerde(Serdes.String()) ); 的优势,但是我发现伪造GlobalKTable的唯一方法是做一个GlobalKTable

我想如果编写一个应用程序来从builder.globalTable(...)加载数据,伪造密钥并将其发布到topic_in_WITHOUT_key的话,那将是可行的。并且topic_in_WITH_key从此GlobalKTable加载。

这是唯一的方法吗?

我对该解决方案的主要关注是让某人创建/配置中间主题,并可能出现错误。在我在介绍中以topic_in_WITH_key进行介绍的情况下,kTable主题充当了中间主题,但是此changelog由应用程序通过适当的配置自动创建。

0 个答案:

没有答案