我对使用交易的情况下kafka生产者的行为有一些疑问: 首先,下面是一些使用事务生成器的代码:
producer.beginTransaction();
try{
producer.send(data1);
producer.send(data2);
producer.commitTransaction();
}catch(Exception e){
producer.abortTransaction();
}
如果失败,我不知道如何让kafka生产者重试此流程:
使用Spring引导,我们可以像这样使用Transaction:
public void sendBatchToKafka(List<String> input) {
logger.info("sendBatchToKafka start");
boolean result = kafkaTemplate.executeInTransaction(kt -> {
for(var kl : input) {
kt.send(producerTopic, kl);
}
return true;
});
logger.info("sendBatchToKafka end " + result);
}
谢谢!