Разница между кафкой идемпотентом и настройкой транзакционного производителя? - PullRequest
2 голосов
/ 18 февраля 2020

При настройке производителя кафки для использования идемпотентного поведения и транзакционного поведения:

Я понимаю, что для идемпотентности мы устанавливаем: enable.idempotence=true и что, изменяя этот единственный флаг на нашем производителе, мы точно гарантируем -время доставки события?

и для транзакций мы должны go далее и установить transaction.id=<some value>, но, установив это значение, он также устанавливает идемпотентность в значение true?

Кроме того, установив один или оба из вышеперечисленных на true, производитель также установит acks = all.

С учетом вышеизложенного я смогу добавить «ровно один раз», просто изменить настройку разрешения идемпотентности? Если бы я хотел go дальше и включить поддержку транзакций, то на стороне потребителя мне нужно было бы только изменить их настройку isolation.level=read_committed? Отражает ли это изображение, как настроить продюсер в терминах EOS?

enter image description here

1 Ответ

1 голос
/ 18 февраля 2020

Да, вы поняли основные понятия.

Включив идемпотентность, производитель автоматически устанавливает acks на all и гарантирует доставку сообщений в течение всего времени существования экземпляра источника.

By Включая транзакции, производитель автоматически включает идемпотентность (и acks=all). Транзакции позволяют группировать запросы на получение и компенсировать смещения и гарантировать, что все или ничего не передается в Kafka.

При использовании транзакций вы можете настроить, должны ли потребители видеть записи только из зафиксированных транзакций, установив isolation.level в read_committed в противном случае по умолчанию они видят все записи, в том числе из отклоненных транзакций.

...