我有一个主题,它使用以下信息接收事件:
键 - > orderId
(整数)
值 - > {"orderId" : aaa, "productId" : xxx, "userId" : yyy, "state" : "zzz"}
(JSON包含订单的全部信息)
我想实现一个交互式查询,以通过orderId获取完整的订单信息。这个想法是能够从物化视图(Kafka Streams商店)获取订单的当前状态。
首先,我创建主题的KStream:
KStream<Integer, JsonNode> stream = kStreamBuilder.stream(integerSerde, jsonSerde, STREAMING_TOPIC);
然后我创建一个KTable
将其分配给商店。问题是显然我只能创建值为聚合的商店,例如:stream.groupByKey().count("myStore");
我需要的商店应该有整个订单信息,而不是聚合。这可能吗?
答案 0 :(得分:1)
您也可以直接将该主题视为KTable
:
KTable<Integer, JsonNode> stream = kStreamBuilder.table(integerSerde, jsonSerde, STREAMING_TOPIC, "store-name-for-IQ");
此常见问题解答也可能有所帮助:http://docs.confluent.io/current/streams/faq.html#how-can-i-convert-a-kstream-to-a-ktable-without-an-aggregation-step