首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹簧卡夫卡与弹簧JPA

弹簧卡夫卡与弹簧JPA
EN

Stack Overflow用户
提问于 2022-06-23 16:42:48
回答 1查看 156关注 0票数 0

我有两个微型服务A和B。

一项服务是向卡夫卡主题“A-主题”发送信息。B服务正在使用该消息。

在B服务中,kafka侦听器将执行以下步骤

代码语言:javascript
复制
             1. Persist the data in the database     (repo.save(entity))
             2. Publish the response message to "B-Topic".   (kafkatemplte.send("B-Topic",message))

在这两个服务中,我都在服务级别上使用Spring @Transactional注释。

在成功场景中,数据被持久化,成功消息仅被发布到主题一次。

何地as

在失败场景中,数据库保存由于完整性约束冲突问题而失败。在这种情况下,失败信息连续10次发布给卡夫卡。

如果我从服务类中删除事务注释,那么消息在失败场景中也只发布一次。

我不明白,为什么事务性注释会导致这条消息被发布10次给kafka。

请让我知道你的意见。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-23 17:23:38

默认的错误处理程序将尝试交付10次;您需要在侦听器容器中启用Kafka事务,因此kafka发送的内容将被回滚( B-Topic上的使用者需要isolation.level=read_committed)。

https://docs.spring.io/spring-kafka/docs/current/reference/html/#transactions

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72733797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档