Мы недавно столкнулись с тем же вопросом. Ответ можно найти в этом исходном файле для потоков кафки:
https://github.com/apache/kafka/blob/1.1/streams/src/main/java/org/apache/kafka/streams/kstream/Windows.java
Который содержит:
static final long DEFAULT_MAINTAIN_DURATION_MS = 24 * 60 * 60 * 1000L; // one day
Таким образом, без указания параметра until()
, ваше оконное хранилище состояний будет хранить записи в течение (нижней границы) одного дня по умолчанию.
Другая часть вашего вопроса: что происходит с событиями, которые приходят с опозданием, после того, как истек срок действия окна? Этот ответ есть в руководстве разработчика:
В Kafka Streams DSL пользователи могут указать срок хранения для
окно. Это позволяет Kafka Streams сохранять старые оконные блоки для
период времени, чтобы дождаться позднего прибытия записей, чьи
временные метки попадают в интервал окна. Если запись прибывает после
срок хранения прошел, запись не может быть обработана и
отброшен.
Объединение этой информации вместе показывает, что если вы не укажете параметр until()
в своем оконном потоке, записи будут храниться не менее одного дня, а записи, поступившие с опозданием более чем на один день, будут отброшены.