私は、複数のサービスにわたって活動を編成するために、大量輸送中のサガを使用して調査しています。サーガの生涯は短く、すべてがうまくいくならば2秒以下です。masstransit deferred in sagas
私の場合、クライアントがコマンドを要求し、サガがそのコマンドを処理し、メッセージが受信されて最終的に最初のコマンドに応答するような状態変更を行う要求/応答アプローチを使用したいと思います。サガを開始し、その時点でクライアントはレスポンスを受け取り、サガの結果を表示することができます。
私が見ることができるところから、この点では、コンテキストはもはや最初の要求を認識していません。この方法で受信したメッセージには、どのように返信できますか?最初のイベントを処理するときに私がサガデータに残すことができるものがありますか?それを使って後で返信しますか?
// client
var response = await client.Request(requestMessage);
// saga
During(SomeState,
When(RequestReceived)
.Then(...)
.Respond(c => MakeResponseMessage(c))
.TransitionTo(Whatever)
)
要求を処理するときにあなたが応答することができます: