通常我会创建 1 个实现 Saga<T> 的类:
public class MyClass1 : Saga<MySagaData>;
{
………
}
MySagaData 代码:
[SagaIndex("ExternalCombinedIdentifier")]
[SagaIndex("MyOwnId")]
public class MySagaData: IContainSagaData
{
public MySagaData()
{
……
}
public Guid Id { get; set; }
public string Originator { get; set; }
public string OriginalMessageId { get; set; }
……
}
现在我需要在另一个类中使用相同的 Saga (Saga<MySagaData>),我们称之为 MyClass2。
如果我像下面这样实现 MyClass2: public class MyClass2 : Saga<MySagaData> { ……… }
Saga<MySagaData> 的 ACID 属性是否会出现在 MyClass1 和 MyClass2 中,就好像 Saga<MySagaData> 只会在 1 个类中使用一样?在 ACID 属性中,我包括例如回滚消息处理程序并在 MyClass1 中重试它,如果另一个类 (MyClass2) 的另一个消息处理程序刚刚提交了对 MySagaData 的更改?