Поведение потокового приложения kafka, когда смещение не выполняется ни приложением (и автоматическое отключение) - PullRequest
1 голос
/ 02 мая 2020

Я хочу знать, каково будет поведение потоков kafka, когда (с использованием низкоуровневого API) auto commit выключено и приложение не выполняет явную фиксацию?

В случае приложение перезапускается (автоматическая фиксация выключена, а само приложение не выполняет явную фиксацию смещений) будет ли приложение читать с начала всегда? Каково будет поведение приложения.

Ответы [ 2 ]

2 голосов
/ 03 мая 2020

Kafka Streams фиксирует смещения на основе commit.interval.ms настроек (по умолчанию 30 секунд). Таким образом, даже если вы запрашиваете коммит, коммиты происходят регулярно. В общем, достаточно полагаться на неявные коммиты Kafka Streams (явный запрос коммитов не требуется для большинства приложений).

2 голосов
/ 02 мая 2020

Kafka Streams автоматически отключает автоматическую фиксацию.

Какой у вас auto.offset.reset? Если последний, то он всегда будет начинаться с последнего смещения, если для application.id нет группы. Потоки не особенные; это тот же лог c, что и любой группы потребителей.

Если есть группа, то вы запускаете терминальный процесс (foreach, print, to, et c), тогда смещение будет зафиксировано. И вы можете включить обработку транзакций, чтобы получить ровно семантику.


Большая часть этого покрыта в документах.

...