构建我的第一个Saga状态机实现。我已经写了一个接口nuget包来共享Saga事件和命令,在执行和发布这些事件的服务之间。我通过基类为每个事件命令实现了Masstransit CorrelatedBy< Guid> 。
public class BaseSagaEvent : CorrelatedBy<Guid>, IBaseSagaEvent
{
public Guid CorrelationId { get; set; }
...
}
我喜欢保持接口nugets(基本上只是接口和poco类的nugets),轻量级,没有nuget依赖(只是我对nuget地狱的经验).有没有一种方法可以实现CorrelatedBy,而不需要将整个Masstransit nuget添加到接口项目中,同时还能享受StateMachine的相关性?
将消息自动关联到状态机saga的唯一方法是使用 "状态机关联"。CorrelatedBy<Guid>
接口。目前的代码没有办法通过名称、类型或其他方式自动确定相关标识符。
没有接口的事件必须使用所示的语法进行声明(与文档相同)。
Event(() => SomeSagaEvent, x => x.CorrelatedById(m => m.Message.Id))