Для целей миграции нам нужно создать записи, используя два разных сериализатора и, следовательно, два разных KafkaProducers (один String и один Avro) в одной транзакции. Но все транзакции выполняются через один экземпляр KafkaProducer следующим образом:
kafkaProducer.beginTransaction();
...
kafkaProducer.send(record);
...
kafkaProducer.commitTransaction();
Могу ли я использовать второй kafkaProducer (со вторым сериализатором) и использовать тот же транзакционал.id и сделать так:
kafkaProducer.beginTransaction();
...
kafkaProducer.send(record);
kafkaProducer2.send(record);
...
kafkaProducer.commitTransaction();
Все будут частью одной транзакции, все непротиворечивы?
РЕДАКТИРОВАТЬ 1:
Согласно тому, что я видел в реализации Java, при вызове commitTransaction существует некоторый механизм() как вызов flush () для самого производителя ... так что я думаю, что приведенная выше модель не сработает ... Есть ли шанс достичь этого без создания полного нового экземпляра всего параллельно?