对于最新的稳定版本,请使用 Spring for Apache Kafka 3.3.0! |
Exactly Once 语义
您可以为侦听器容器提供实例。
配置后,容器会在调用侦听器之前启动事务。
侦听器执行的任何操作都参与事务。
如果侦听器成功处理了记录(或使用多个记录,则使用 ),则容器会在事务管理器提交事务之前使用 ),将偏移量发送到事务。
如果侦听器引发异常,则回滚事务并重新定位使用者,以便可以在下一次轮询时检索回滚的记录。
有关更多信息以及处理反复失败的记录,请参阅 After-rollback Processor 。KafkaAwareTransactionManager
KafkaTemplate
BatchMessageListener
producer.sendOffsetsToTransaction()
使用事务可实现 Exactly Once 语义 (EOS)。
这意味着,对于序列,可以保证序列只完成一次。
(读取和进程至少具有一次语义)。read → process → write
Spring for Apache Kafka 版本 3.0 及更高版本仅支持:EOSMode.V2
-
V2
- 又名 fetch-offset-request fencing (自 2.5 版本起)
这要求代理版本为 2.5 或更高版本。 |
使用 mode ,每个都没有必要有一个生产者,因为消费者元数据与偏移量一起发送到事务,并且代理可以使用该信息来确定生产者是否被隔离。V2
group.id/topic/partition
有关更多信息,请参阅 KIP-447。
V2
以前是 ;已更改以使框架与 KIP-732 保持一致。BETA
EOSMode