【问题标题】:Update database using events in Springboot使用 Spring Boot 中的事件更新数据库
【发布时间】:2022-01-06 02:03:56
【问题描述】:

我需要使用 Springboot 微服务中的事件更新数据库。每个微服务都有自己的持久层。微服务使用 REST API 相互通信。

场景:

我有两个微服务 - Vendor microservice 和 vendor DB 和 Order microservice 和 order DB。当供应商微服务收到请求时,它将更新供应商数据库并在订单数据库中添加订单,所有这些都应该在一个事务中完成。

我无法使用 REST API 调用供应商服务来更新订单。如果任何事务失败,一切都应该回滚。我怎样才能使用事件或类似的东西来实现这一点?

【问题讨论】:

    标签: java spring spring-boot transactions microservices


    【解决方案1】:

    您可以使用消息队列,例如 Kafka 或 RabbitMQ。因为您遇到了一个称为两阶段提交的问题。您可以使用在由微服务组成的项目中广泛使用的transactional outbox pattern。

    【讨论】:

      【解决方案2】:

      Spring 已经为事务提供了一致的编程模型。你可以使用

      @Transactional

      实现这一目标。

      您可以在官方文档中阅读有关事务注释的更多信息 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-15
        • 1970-01-01
        • 2021-07-07
        • 1970-01-01
        • 2014-08-08
        相关资源
        最近更新 更多