【问题标题】:Is Apache Kafka able to handle transactions?Apache Kafka 是否能够处理事务?
【发布时间】:2015-08-18 13:08:01
【问题描述】:

鉴于生产者能够处理事务(简而言之:回滚和提交),我们计划将 Kafka 用作数据仓库的中心组件。

当谷歌搜索 Kafka + Transactions 时,我发现了很多关于 Kafka 如何 处理事务的可能性的理论想法,但目前我在支持生产者的提交和回滚的java API。

有没有人对事务和 Kafka 有一些经验,可以给我一个提示?

【问题讨论】:

  • 您能更具体地谈谈制作人部分吗?你到底想达到什么目的
  • 简单地说:我想通过Java producer API 向一个topic 推送消息,看看是否有效。如果 id 工作,我想将消息提交给主题。类似于常见关系数据库系统中的 JMS 或 XA。
  • "看看它是否有效" -- 生产者 API 可以回调成功或失败。这对于数据仓库来说应该足够了:如果 Kafka 不是您的记录系统,那么您总是可以重试发送到 Kafka。或者您能否更具体地说明您要做什么?

标签: java transactions apache-kafka


【解决方案1】:

我认为您正在寻找的基本上称为 Kafka 中的事务消息传递,其中生产者能够创建会话(也称为事务会话)并在会话中发送消息。因此它可以选择提交/中止事务。

[来源]:详情请阅读wiki

【讨论】:

  • 嗨,是的,我看过 wiki,但据我所知,这只是对未来实施的建议。我的问题是当前版本是否已经可以处理事务会话。
【解决方案2】:

实际上,从最新版本 0.11.0.0 开始支持事务。见Guarantee unique global transaction for Kafka Producers

【讨论】:

    【解决方案3】:

    不; Kafka 不支持事务。

    您可以确定消息已生成到分区,但一旦生成,您将无法回滚该消息。

    自 0.11.0 版起 Apache Kafka 支持事务:https://cwiki.apache.org/confluence/display/KAFKA/Transactional+Messaging+in+Kafka

    【讨论】:

      猜你喜欢
      • 2019-01-22
      • 1970-01-01
      • 2022-12-15
      • 2023-03-05
      • 2014-05-17
      • 1970-01-01
      • 2012-09-02
      • 2010-11-25
      • 2019-01-16
      相关资源
      最近更新 更多