【发布时间】:2019-08-25 20:47:05
【问题描述】:
我需要在包含以下组件的系统中应用事务:
- Kafka 生产者,这是一些外部应用程序,可以发布有关 kafka 主题的消息。
- Kafka 消费者,这是一个 Spring Boot 应用程序,我在其中配置了 kafka 侦听器,处理完消息后,需要将其保存到 NoSQL 数据库中。
我浏览了几个博客,例如 this 和 this,它们都在讨论流应用程序上下文中的事务,其中消息将被读取-处理-写入回 Kafka 主题。
我没有看到任何关于在类似于我的用例中实现事务性的明确示例或博客,即在单个原子事务中生成-处理-写入数据库。我相信这是非常常见的场景,也必须有一些支持。
有人可以指导我如何实现这一目标吗?任何相关的代码 sn-p 将不胜感激。
【问题讨论】:
-
所以你问的是分布式事务而不是一次性语义?
-
是的,这是一种分布式事务
-
>in a single atomic transaction。没有办法做到这一点; Kafka 不支持 XA 事务(大多数 NoSQL 数据库也不支持)。您可以使用 Spring 的事务同步来实现尽力而为的 1PC。
标签: apache-kafka spring-transactions spring-kafka