在Rest Call之后发生DB Call的事务问题

问题描述 投票:0回答:1

我正在使用Spring Boot我的应用程序现在只是Monolithic,稍后可能会切换到微服务。

场景1:在这里,我的数据库调用不依赖于REST响应

@Transactional
class MyService {

    public void DBCallNotDependsOnRESTResponse(){

        //DB Call
        //REST Call, This restcall gives response like 200 "successfull"
    }
}

场景2:在这里,我的数据库调用取决于REST响应

@Transactional
class MyService {

    public void DBCallDependsOnRESTResponse(){

        //REST Call, making a Real Transaction using BrainTree
        //DB Call, HERE DB CALL DEPENDS ON REST RESPONSE
    }
}

在方案1的情况下,如果REST失败,数据库将回滚,我没有问题。

但是,如果是方案2,则无法回滚REST调用,以防DB调用发生异常。

我已经在google中搜索了以上内容,发现了一些解决方案,例如我们需要使用类似Pub-Sub模型系统的解决方案,但是我无法清楚地理解这个概念。

如果有人能够为SCENARIO 2提供解决方案,我会很高兴。我猜我的查询与某些体系结构设计有关。请提出一些好的体系结构方法来解决上述事务问题。您认为使用Kafka之类的消息系统会解决以上问题吗?仅供参考,当前,我的应用程序是Monolithic,是否可以使用微服务?我是否需要使用两相提交或Sagas可以解决我的问题? Sagas可以用于整体应用吗?

编辑:关于RestCall:我实际上正在使用BrainTree进行真实交易,这是一个Rest Call。

spring-boot rest design-patterns distributed-transactions architectural-patterns
1个回答
0
投票

您能详细说明您通过休息电话取得的成就吗?您是否正在更新数据库调用将使用的任何数据?

如果两个呼叫是独立的,那么顺序是否重要?由于数据库调用将在方法本身的末尾提交]

© www.soinside.com 2019 - 2024. All rights reserved.