Я использую подавление в падающих окнах для получения агрегированных результатов. Я изучаю оба параметра, пока и TimeLimit, и до тех пор пока WindowCloses для подавления.
Я не хочу, чтобы мои потоки отключались при заполнении буфера. Я видел эту функцию emitEarlyWhenFull (), но она не может быть применена поверх, пока WindowCloses.
Следовательно, я выбираю, пока TimeLImit с emitEarlyWhenFull (), пожалуйста, обратитесь ниже код:
groupedStreams.windowedBy(TimeWindows.of(Duration.ofMinutes(5)))
.aggregate(() -> initialBlob, blobAggregator,someserde)
.suppress(Suppressed.untilTimeLimit(Duration.ofMinutes(5), new StrictBufferConfigImpl().emitEarlyWhenFull()))
.toStream()
В моем случае я использую падающие окна в течение 5 минут. Таким образом, каждые 5 минут окно будет открыто для каждого ключа записи. Согласно документации, самые старые записи будут отправлены после заполнения буфера.
что происходит с новыми записями с тем же ключом, когда старые записи отправляются в одно и то же окно?
Например: поток сообщений:
(А, 1)
(А, 2)
(A, 3) -> общий результат: (A, 6). предположим, что здесь буфер заполнен, (A, 6) будет отправлено в нисходящем направлении. Предположим, что (A, 4) теперь появляется в том же окне, что будет дальше? это будет: (A, 10) или снова начнется с (A, 4)?