【发布时间】: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 主题上的消息将处于未提交状态?
我测试了这样的场景,但它不起作用。在主题上发布的消息未处于未提交状态。因此想检查这种情况的可能性。
【问题讨论】: