Какой будет лучший шаблон для слияния двух Timewindows - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть TimeWindowed KTable

stream.table("topicA")
      .groupByKey()
      .windowedBy(TimeWindows.of(TimeUnit.HOURS.toMillis(1L))
      .until(TimeUnit.DAYS.toMillis(1L)))
      .reduce((value1, value2) -> value2,
              Materialized.as("A-Store"))

Теперь я помещаю 4 события в TopicA,

key1 Event1 currentTime -90 min
key2 Event2 currentTime -45 min
key1 Event3 currentTime -30 min
key3 Event4 currentTime -15 min

, если я не получаю события из KTable с помощью следующей команды

fetchAll(System.currentTimeMillis() - TimeUnit.HOURS.toMillis(2),
         System.currentTimeMillis())

как и ожидалось, я получил 4 события из хранилища, включая два события key1, доставленные в разные временные окна ...

Теперь в обычном режиме работы KTable всегда доставляется последнее событие для ключа, как мне поступитьэтот сценарий?Конечно, я могу создать карту и вставить туда события, а потом вспомнить, но это кажется неуклюжим.

Есть ли лучший способ справиться с этим, собирать данные из двух разных временных окон и объединять их?

...