3

让单个 saga 处理所有消息的正确方法是什么?

我不认为我不能指定一些message-to-saga相关性。我可以吗?我相信这会导致“找不到传奇”错误。

一种天真的方法是在 saga 中有一些恒定的 ID,但这似乎是错误的。

class SomePolicy :
    Saga<SomePolicy.State>,
    IAmStartedByMessages<SomeEvent>
{
    internal class State : ContainSagaData
    {
        public int Id { get { return 1; } }
    }

    protected override void ConfigureHowToFindSaga(SagaPropertyMapper<State> mapper)
    {
        mapper
            .ConfigureMapping<SomeEvent>(message => message.MagicConstant)
            .ToSaga(saga => saga.Id);
    }

    public void Handle(SomeEvent message)
    {
        // Modify the saga state here.
    }
}
4

1 回答 1

2

ConfigureHowToFindSaga您可以提供一个实现,而不是覆盖,该实现IFindSagas<T>.Using<M>用于从 M 类型的消息中找到 T 类型的 saga。然后让它始终返回相同的实例。

有关更多详细信息和一些示例,请参阅复杂 Saga 查找逻辑

于 2015-12-23T05:37:29.880 回答