在上一篇博客中,我们介绍了kafka的一次性语义。这篇博客将涵盖多个消息投递语义,介绍幂等生产者、事务生产者以及kafka stream的一次性语义。
Transactional Semantics
atomic multi-partition writes
Transaction实现了写入多个topic和partition的原子写入。例如,如果消费者在topic partition tp0的offset X处消费了消息A,并且在将消息A进行某些处理后在topic parition tp1处写入了消息B。那么只有在消息A在被成功消费和消息B成功发布时,这个读写周期才认为时原子的。
现在,消息A被认为从topic partition tp0成功消费,是当offset X被标记为Consumed的时候。标记一个offset为consumed称为commit an offset。在kafka中,我们通过将offset写入一个offset topic,来记录offset commited。
既然一个offset commit只是写入另一个topic,因此,不同topic和partition之间的原子写入,也可以启用原子 读-处理-写周期。
翻译自:Transactions in Apache Kafka