Kafka 事务原理
生产者创建时,设置全局唯一的事务ID --- TransactionID;事务ID与PID绑定,当producer重启后,会根据事务ID查找PID,因此能够保证全局at-exactly-once语义
配置方法:transactional.id(注:使用事务的前提是必须开启幂等性)
解决全局精确唯一语义是kafka事务引入的初衷,但是后期又引入的新的功能:producer生产消息的batch在一个原子单元内完成;
也就是说:当前batch的消息要么全部生产成功,要么全部失败,并且故障恢复后,能够保证事务ID不变;
这里需要提一下:事务ID是由用户指定的,而PID是生产者创建成功后,producer向kafka申请的;并且两者为1:1关系