【问题标题】:Kafka & JPA transaction managementKafka & JPA 事务管理
【发布时间】:2021-08-06 03:15:51
【问题描述】:

我是 Kafka 的新手,正在尝试对 Kafka 和 DB 事务进行事务管理。我已经阅读了很多关于这个主题的文章,但到目前为止我只能成功测试一个场景。

@Transactional
public void updateData(InputData data)
{
  
  repository.save(data);
  kafkaTemplate.send(data.id,data);
}

在这种情况下,如果 Kafka 事务失败,DB 事务将被回滚。这很好用。

但是是否可以先进行 Kafka 事务,然后进行 DB 事务?如果数据库事务失败,那么 Kafka 事务将被中止并且发布在 Kafka 主题上的消息将处于未提交状态?

我测试了这样的场景,但它不起作用。在主题上发布的消息未处于未提交状态。因此想检查这种情况的可能性。

【问题讨论】:

    标签: apache-kafka transactions


    【解决方案1】:

    我解决了这个问题。它是通过使用嵌套的@transactional 注释来解决的。我将@transactional("kafkaTxManager) 放在我开始kafka 事务的方法上,并将@transactional("chainkafkaTxmanager") 放在我开始数据库事务的方法上。

    【讨论】:

      猜你喜欢
      • 2010-09-09
      • 2021-05-24
      • 1970-01-01
      • 2019-02-24
      • 2011-12-24
      • 2018-10-24
      • 2018-12-30
      • 1970-01-01
      相关资源
      最近更新 更多