У меня есть тема Kafka, где я отправляю события местоположения (key = user_id, value = user_location). Я могу читать и обрабатывать его как KStream
:
KStreamBuilder builder = new KStreamBuilder();
KStream<String, Location> locations = builder
.stream("location_topic")
.map((k, v) -> {
// some processing here, omitted form clarity
Location location = new Location(lat, lon);
return new KeyValue<>(k, location);
});
Это хорошо работает, но я бы хотел иметь KTable
с последней известной позицией каждого пользователя. Как я могу это сделать?
Я умею писать и читать из промежуточной темы:
// write to intermediate topic
locations.to(Serdes.String(), new LocationSerde(), "location_topic_aux");
// build KTable from intermediate topic
KTable<String, Location> table = builder.table("location_topic_aux", "store");
Есть ли простой способ получить a KTable
от a KStream
? Это мое первое приложение, использующее потоки Kafka, поэтому я, вероятно, не вижу ничего очевидного.