【发布时间】:2018-03-26 06:17:50
【问题描述】:
我有一个 CQRS .NET Core 服务,目前每个命令都有一个端点。有时,一组命令构成系统中的单个操作(例如,创建评估),并且一旦前一个命令将数据提交到数据库(这是因为遗留数据库设计),就必须同步执行 3 个左右的命令。
目前这由客户端处理,其中每个命令在其上一个依赖命令完成后触发(使用承诺)。
值得注意的是,这些命令有时也会单独执行,如果将它们组合成一个命令,最终会变得庞大且难以测试。
我想做的是创建一个端点来管理像我们的创建评估这样的操作,它必须一个接一个地执行以下命令:
- 用户创建
- 已创建评估
- AssessmentRegisteredToClient
我一直在使用 MassTransit saga/状态机/流程管理器,但我对它的工作越多(我的理解越多),我就越觉得这似乎是矫枉过正而不是正确的方法(因为这些是命令而不是事件,并且都在一个有界上下文中)。
流程管理器看起来是否合适?如果合适,MassTransit 状态机实施是否合适,或者我应该查看其他来源?或者我应该只是简单地创建一个每次触发每个命令的端点(即在 ASP 控制器中有这个同步代码)?
【问题讨论】:
-
所有命令都由同一个Aggregate处理?如果您不使用 DDD,那么“在同一事务边界内”?
-
@ConstantinGalbenu 是的,这是正确的(有点)。每个命令实际上在它自己的事务中执行。
标签: .net-core cqrs masstransit saga