我想在Kafka Stream API中获取针对Map Key中的键列出的所有对象,然后将其存储到Kafka Store中,然后根据键来获取它。
案例1:在这种情况下,我将获得针对某个键可用的对象总数。
return topicStream.map((k,v)-> { // transform they key as Online/Offline based on status
String online = v.isOnline() == true ? "Online" : "Offline";
return new KeyValue<>(online, v);
})
.groupByKey(Serialized.with( //Group by the newly mapped key in previous step
Serdes.String(),
new JsonSerde<>(VehicleLocation.class))
)
.count(Materialized.as("statusCount")) // materialize this value to state store
.toStream();
要从商店获取,我正在使用:
ReadOnlyKeyValueStore<String, Long> keyValueStore= kStreamBuilderFactoryBean.getKafkaStreams()
.store("statusCount", QueryableStoreTypes.keyValueStore());
return keyValueStore.get(status); //get the count for the key viz. Offline/Online
问题:现在,我想获取所有的VehicleLocation对象并返回它,以便可以将其公开为休息服务响应。 1.为此,我想将Key用作“ Available”并存储VehicleLocation对象和 2.然后将其写入“可用”卡夫卡商店 3.然后通过传递“可用”键从kafka商店中读取。