2 つ以上のメッセージによって開始される NServiceBus 5.x の Saga の設計に関するヘルプを探しています。これは、サガが単一のメッセージで開始されるのではなく、サガが開始される前にすべてのメッセージが存在する必要があることを意味します。
それがどのように機能するのかよくわかりません。サンプルや例はどこにもありません。
私はいくつかのメッセージで物語が始まるのは全く問題ないと明言している本を何冊か読みました。
私が得られないのは、たとえば、サガを開始するために 3 つのメッセージが必要な場合に、サガがどのように見つかるかということです。サガが「開始」される前に、3 つのメッセージすべてが任意の順序で到着する必要があります。これは属性の選択にどのように影響しますか?[Unique]
例:「StoreID」、「ComputerID」、「UserID」の 3 つの ID によって「一意に」識別される saga が必要です。これら 3 つの ID は、3 つの異なるコマンド 、Message1
、Message2
で到着しますMessage3
。
public class MySaga : Saga<MySagaData>,
IAmStartedByMessages<Message1>,
IAmStartedByMessages<Message2>,
IAmStartedByMessages<Message3>
{ ...
}
MySagaData の 3 つのプロパティに [Unique] 属性を設定する必要がありますか?
public class MySagaData
{
[Unique]
public int StoreId {get;set;}
[Unique]
public int ComputerId {get;set;}
[Unique]
public int UserId {get;set;}
}
または、これら 3 つを連結する読み取り専用プロパティを作成する必要がありますか?
到着するMessage1
とMessage3
、物語は開始できません。Message2
不足している。
それから別の人Message1
が到着します。
そしてMessage2
到着。(最初のサーガを完了し、開始できるようにします)
2番目はMessage1
どうですか?
これはどのように処理されますか?