Соединение Kafka Streams основано на времени события, т. Е. Все, что возвращает TimestampExtractor
(по умолчанию отметка времени сообщения хранится в topi c), и вы не можете изменить ее (вы можете использовать только другой экстрактор отметки времени для косвенно изменить результат).
Обратите внимание, что соединение выполняется «с нетерпением», и, таким образом, для всех левых записей поиск в правом потоке выполняется немедленно, что может привести к дополнительным <key, (left-value,null)>
результаты.
Это также зависит от порядка обработки, который наилучшим образом основан на времени события. Гарантии получили улучшение в выпуске 2.3
, и использование параметра конфигурации max.task.idle.ms
может помочь смягчить проблему.
В среднесрочной перспективе улучшено поведение левого и внешнего соединения, чтобы избежать этих дополнительных записи результатов. Поскольку Kafka является проектом с открытым исходным кодом, и вы хотели бы получить его, пожалуйста, помогите исправить это раньше:)
Единственной другой альтернативой будет реализация пользовательского оператора соединения через Processor API.