Однако явного контроля нет, KTable внутренне кэширует нисходящие данные для подавления последовательных обновлений одного и того же ключа (см. https://kafka.apache.org/11/documentation/streams/developer-guide/memory-mgmt.html и https://www.confluent.io/blog/watermarks-tables-event-time-dataflow-model/).. В то же время этот кэш каждый раз очищается Kafka. Потоки фиксируют.
Таким образом, если кэш достаточно велик для хранения всех данных, вы можете имитировать желаемое поведение, настроив commit.interval.ms
соответствующим образом. Обратите внимание, что это может быть только приближением желаемого поведения.
В качестве альтернативы вы можете создать собственное решение с помощью Punctuations
. Идея заключалась бы в том, чтобы не записывать какие-либо данные с помощью оператора KTable#to()
, а использовать график пунктуации для сканирования всего хранилища и записи данных в тему. Этот подход довольно продвинутый и несколько «хакерский», хотя и не является чистым решением.