【问题标题】:Does Kafka supports XA transactions?Kafka 是否支持 XA 事务?
【发布时间】:2019-09-27 04:47:34
【问题描述】:

JDBC 事务和 kafka 事务可以作为 XA 事务一起工作吗? kafka事务API是否支持XA事务?

【问题讨论】:

  • 不确定你的意思。 Kafka 没有 JDBC 驱动程序
  • 我不是在询问 kafka JDBC 驱动程序。 Kafka 有自己的事务 API - cwiki.apache.org/confluence/display/KAFKA/…
  • 是的,我知道。我在问如果没有任何 JDBC 协议支持,JDBC 事务将如何与 Kafka 一起工作
  • Kafka 不需要支持 JDBC 协议。我的问题是 kafka 是否提供对具有 2 阶段提交的 XA 事务的支持。 JDBC 只是一个示例参与者,它可以是任何其他支持 XA 事务的系统\平台。请参考-en.wikipedia.org/wiki/X/Open_XA

标签: apache-kafka transactions xa


【解决方案1】:

Kafka 不支持 XA 事务。 Kafka 将完全一次性的负担委托给消息消费者。

【讨论】:

    【解决方案2】:

    查看

    “不支持的功能”部分

    https://docs.confluent.io/platform/current/clients/kafka-jms-client/index.html

    Kafka 不支持事务(XA 或其他)。

    生产者和消费者都需要对 80 年代的 ad-hoc 事务管理器样式进行样板化。

    我知道在 Spring 和微服务阵营中流传着很多言论,声称从 CAP 定理下的事务是不可能的到分布式事务是专有的供应商锁定。人们似乎很困惑,认为事务只是数据库的东西。

    但现实情况是,自 90 年代初以来,我们已经在远程调用上拥有可互操作、标准化和开源的 XA,包括数据库、消息服务等

    老实说,我不认为 Kafka 是一款可用于生产的产品,它根本不具备支持重要消息应用程序的基本功能。性能似乎与提高云托管费用有关。

    【讨论】:

      【解决方案3】:

      缺少支持 XA 事务的 API:在生产者重新连接后恢复事务的能力。一些系统已经破解了它,您可以在这里查看:https://github.com/hazelcast/hazelcast/blob/master/extensions/kafka/src/main/java/com/hazelcast/jet/kafka/impl/ResumeTransactionUtil.java

      但是,API 不是 X/Open 标准,但可以完成这项工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-15
        • 1970-01-01
        • 1970-01-01
        • 2018-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多