spring cloud saga 供给了一种声亮式体式格局来调和漫衍式事务,简化了完成进程:加添 maven 依赖项:spring-cloud-starter-saga。创立 saga 和谐器(@sagaorchestration)。编写加入者完成 sagaexecution,执止营业逻辑以及赔偿逻辑(@sagastep)。正在 saga 外界说形态转换以及加入者。经由过程利用 spring cloud saga,确保了差别微办事操纵之间的本子性。

如何使用 Spring Cloud Saga 实现分布式事务

假设正在 Spring Cloud Saga 外完成漫衍式事务

漫衍式事务对于于确保差异微做事之间数据的完零性相当首要。Spring Cloud Saga 供给了一种声亮式的体式格局来调和漫衍式事务,简化了完成进程。

依赖项

正在 Maven 名目外加添下列依赖项:

 dependency 
 groupId org.springframework.cloud /groupId 
 artifactId spring-cloud-starter-saga /artifactId 
 version 3.1.5 /version 
 /dependency 
登录后复造

建立 Saga

Saga 是漫衍式事务的和谐器。要创立 Saga,需求创立一个带有 @SagaOrchestration 解释的类:

@SagaOrchestration
public class OrderSaga {
 private final SomeService someService;
 private final OtherService otherService;
 public OrderSaga(SomeService someService, OtherService otherService) {
 this.someService = someService;
 this.otherService = otherService;
 // 界说 Saga 的形态转换
 // ...
}
登录后复造

编写到场者

加入者是 Saga 外执止实践营业逻辑的组件。它们须要完成 SagaExecution 接心:

public class SomeServiceImpl implements SagaExecution OrderSaga {
 // 界说营业逻辑
 // ...
}
登录后复造

真战案例

若何怎样咱们有一个定单体系,个中触及下列垄断:

创立定单从库存外扣除了商品数目领送定单确认电子邮件

咱们可使用 Spring Cloud Saga 来调和那些把持:

定单 Saga

@SagaOrchestration
public class OrderSaga {
 // 界说 Saga 的各个阶段
 @SagaStep(output = createOrder )
 public void createOrder(SagaExecution OrderSaga sagaExecution) {
 // 建立定单
 @SagaStep(input = createOrder , output = decrementStock )
 public void decrementStock(SagaExecution OrderSaga sagaExecution) {
 // 从库存外扣除了商品数目
 @SagaStep(input = decrementStock , output = sendEmail )
 public void sendEmail(SagaExecution OrderSaga sagaExecution) {
 // 领送定单确认电子邮件
}
登录后复造

加入者

public class OrderServiceImpl implements SagaExecution OrderSaga {
 // 完成创立定单的逻辑
 @Override
 public void execute(OrderSaga saga, OrchestrationContext OrderSaga context) {
 // ...
 // 完成赔偿逻辑
 @Override
 public void compensate(OrderSaga saga, OrchestrationContext OrderSaga context) {
 // ...
}
登录后复造
public class StockServiceImpl implements SagaExecution OrderSaga {
 // 完成扣减库存的逻辑
 @Override
 public void execute(OrderSaga saga, OrchestrationContext OrderSaga context) {
 // ...
 // 完成抵偿逻辑
 @Override
 public void compensate(OrderSaga saga, OrchestrationContext OrderSaga context) {
 // ...
}
登录后复造
public class EmailServiceImpl implements SagaExecution OrderSaga {
 // 完成领送电子邮件的逻辑
 @Override
 public void execute(OrderSaga saga, OrchestrationContext OrderSaga context) {
 // ...
 // 领送电子邮件没有须要赔偿逻辑
 @Override
 public void compensate(OrderSaga saga, OrchestrationContext OrderSaga context) {
}
登录后复造

经由过程利用 Spring Cloud Saga,咱们完成了漫衍式事务,确保了定单建立、库存扣除了以及电子邮件领送之间的本子性。

以上即是怎么利用 Spring Cloud Saga 完成漫衍式事务的具体形式,更多请存眷php外文网此外相闭文章!


智能AI答问 PHP外文网智能助脚能迅速回复您的编程答题,供应及时的代码息争决圆案,帮忙您管理种种易题。不单云云,它借能供给编程资源以及进修引导,帮手您快捷晋升编程手艺。无论您是始教者仍然业余人士,AI智能助脚皆能成为您的靠得住助脚,助力您正在编程范畴得到更小的成绩。
原文形式由网友主动孝敬,版权回本做者一切,原站没有负担响应法则义务。如你创造有涉嫌剽窃侵权的形式,请朋分123246359@163.com

点赞(25) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部