Execute方法 。其中Execute代表正向操作,Compensate代表反向补偿操作 。用一个简单的下单流程:创建订单->扣减库存->支付订单举例而言,其示意图如下所示 。而对于具体实现,可参阅文章:AspNetCore&MassTransit Courier实现分布式事务

文章插图
有状态消费者有状态消费者,即消费者有状态,其状态会持久化,代表的消费者类型为
MassTransitStateMachine 。MassTransitStateMachine是MassTransit Automatonymous 库定义的,Automatonymous 是一个.NET 状态机库,用于定义状态机,包括状态、事件和行为 。MassTransitStateMachine就是状态机的具体抽象,可以用其编排一系列事件来实现状态的流转,也可以用来实现Saga模式的分布式事务 。并支持与EF Core和Dapper集成将状态持久化到关系型数据库,也支持将状态持久化到MongoDB、Redis等数据库 。MassTransitStateMachine对于Saga模式分布式事务的实现方式与RoutingSlip不同,还是以简单的下单流程:创建订单->扣减库存->支付订单举例而言,其示意图如下所示 。基于MassTransitStateMachine 实现分布式事务详参后续文章 。
文章插图
从上图可知,通过
MassTransitStateMachine可以将事件的执行顺序逻辑编排在一个集中的状态机中,通过发送命令和订阅事件来推动状态流转,而这也正是Saga编排模式的实现 。应用场景了解完MassTransit的核心概念,接下来再来看下MassTransit的核心特性以及应用场景:
- 基于消息的请求响应模式:可用于同步通信
- Mediator模式:中间者模式的实现,类似MediatR,但功能更完善
- 计划任务:可用于执行定时任务
- Routing Slip 模式:可用于实现Saga模式的分布式事务
- Saga 状态机:可用于实现Saga模式的分布式事务
- 本地消息表:类似DotNetCore.Cap,用于实现最终一致性
【MassTransit | .NET 分布式应用框架】
经验总结扩展阅读
- 4 .NET 6学习笔记——如何在.NET 6的Desktop App中使用Windows Runtime API
- 学习ASP.NET Core Blazor编程系列八——数据校验
- 【.NET 6】RabbitMQ延迟消费指南
- 简读《ASP.NET Core技术内幕与项目实战》之3:配置
- .net core-利用PdfSharpCore和SkiaSharp.QrCode 添加PDF二维码页眉
- 云原生分布式 PostgreSQL+Citus 集群在 Sentry 后端的实践
- .net core -利用 BsonDocumentProjectionDefinition 和Lookup 进行 join 关联 MongoDB 查询
- 微服务系列之分布式日志 ELK
- .net lambda表达式合并
- .NET Core C#系列之XiaoFeng.Threading.JobScheduler作业调度

 
   
   
   
   
   
   
   
   
   
   
   
  