управляется оператором подавления потоков kafka до события EventLimit? - PullRequest
0 голосов
/ 30 апреля 2020

Интересно, подавляет ли оператор kafka-потоков оператор до тех пор, пока TimeLimit не управляется событиями?

То есть у меня есть следующий код, который я тестирую

ktable.suppress(Suppressed.untilTimeLimit(Duration.ofSeconds(5), BufferConfig.maxBytes(1000000L).emitEarlyWhenFull()))

Похоже, если я получаю все мои ключи в буфере (скажем, в течение 2 секунд), и после этого больше нет ключей, ничего не выйдет. Это потому, что поток застрял и больше не развивается, это правильно?

Кажется, единственный способ решить эту проблему - использовать , покаWindowCloses , но это работает только с неограниченным буфером или со строгим, оба варианта могут привести к закрытию приложения.

То, что я хочу, это emitEarlyWhenFull () , но также с максимальным временем выполнения. Даже если событий больше не будет, я хочу, чтобы в какой-то момент все вышло go вместо того, чтобы оставаться в буфере. Это звучит как использование настенных часов. Но KIP о его добавлении предусматривал, что это будет обусловлено событиями. таким образом, даже если часы движутся вперед, если не происходит событие, все, что находится в буфере, остается застрявшим. https://cwiki.apache.org/confluence/display/KAFKA/KIP-424%3A+Allow+suppression+of+intermediate+events+based+on+wall+clock+time

Тем не менее, проверка настенных часов выполняется на основе событий: если в течение 5 секунд не будет получено ни одного события, никакие события не будут отправлены в нисходящем направлении.

Есть ли способ достичь того, что я ищу, с потоками кафки сегодня?

...