Продолжить транзакцию производителя Kafka после перезапуска производителя - PullRequest
0 голосов
/ 05 июня 2019

Целью настройки transactional.id для продюсера, в моем понимании, является защита от производителя зомби и заблаговременное прерывание его транзакций, чтобы избежать необходимости ожидания тайм-аута.

Что яЯ заинтересован в том, чтобы иметь возможность продолжить сделку.Например:

producer.beginTransaction();
producer.send(...);
// now the producer crashes

// start a new producer with same transactional.id
producer = new KafkaProducer(...); 
// this aborts the unfinished transaction of the previous producer
producer.initTransactions(); 

Мне кажется, что это возможно, просто API для этого просто не существует.Есть что-нибудь, что мешает нам сделать это?

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

...