JDBC 事务和 Kafka 事务可以作为 XA 事务一起工作吗?Kafka 事务 API 是否支持 XA 事务?
Kafka不支持XA事务。 Kafka将恰好一次性的负担委托给消息消费者。
看着"Unsupported Features"部分
https://docs.confluent.io/platform/current/clients/kafka-jms-client/index.html
Kafka不支持事务(包括XA和其他类型)。
生产者和消费者都需要像80年代那样手动编写事务管理器模板。
在Spring和微服务领域,有很多关于CAP理论下事务不可能、分布式事务是专有厂商锁定等的言论。这导致人们普遍认为事务只是数据库的事情,存在很多混淆。
但实际上,我们自从90年代初期就已经拥有了可互操作、标准化和开源的XA远程调用技术,包括数据库、消息服务等。
说实话,我不认为Kafka已经具备支持非平凡消息应用所需的基础功能,因此不适合在生产环境中使用。而且,性能似乎与增加云托管费用有关。
支持XA事务的API缺少一个重要部分:在生产者重新连接后恢复事务的能力。一些系统已经通过某种方式绕过了这个问题,你可以在这里查看:https://github.com/hazelcast/hazelcast/blob/master/extensions/kafka/src/main/java/com/hazelcast/jet/kafka/impl/ResumeTransactionUtil.java。
然而,该API不是X/Open标准,但可以完成工作。