кафка смещение управления авто против ручного - PullRequest
0 голосов
/ 15 января 2020

Я работаю над приложением весенней загрузки, которое использует поток Kafka, в моем приложении я хочу управлять смещением Kafka и фиксировать смещение только в случае успешной обработки сообщений. Это важно, чтобы быть уверенным, что я не потеряю сообщения, даже если Кафка перезапустится или zookeeper не работает. моя текущая ситуация - когда мой Kafka не работает и мой потребитель начинает с самого начала и принимает все предыдущие сообщения.

также мне нужно знать, в чем разница между управлением автоматом смещения Kafka c с помощью autoCommitOffset и управление им вручную с помощью HBase или zookeeper или контрольных точек?

также, каковы преимущества управления им вручную, если есть автоматическая конфигурация c, которую мы можем использовать?

1 Ответ

0 голосов
/ 16 января 2020

У вас есть нет гарантии долговечности с автоматической фиксацией

Старые клиенты Kafka действительно использовали Zookeeper для смещения хранилища, но теперь это все в брокере, чтобы минимизировать зависимости. Kafka Streams API не имеет возможности интегрировать смещенное хранилище за пределы самого Kafka, и поэтому вы должны использовать Consumer API для поиска и поиска / фиксации смещений во внешнем хранилище, однако, если вы решите это сделать, вы все равно можете получить меньше, чем оптимальная обработка сообщений.

Моя текущая ситуация - когда мой Kafka не работает и мой потребитель начинает с самого начала и принимает все предыдущие сообщения

Похоже, вы установили auto.offset.reset=earliest и вы никогда не фиксировать никаких смещений ...

Параметр автоматической фиксации выполняет periodi c commit, а не "automati c после прочтения любого сообщения".

Если вы хотите гарантировать доставку, вам нужно установить как минимум acks=1 в производителе и фактически сделать commitSync в потребителе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...