延期されたメッセージと未処理の応答を数回放棄する必要がありましたが、それは私のサガで「相関IDをインクリメントする」ことによって行いました。しかし、あなたはサガについて言及していないので、この解決策があなたに使えるかどうかはわかりません。しかし、私はそれがあなたが求める「他のメカニズム」の下にあると思います:)
この例を確認してください-ここに、特にカスタムが含まれている私のサガの状態がありますCorrelationId
:
public class MySagaData : ISagaData
{
// ... the usual stuff here
public string CorrelationId { get; set; }
}
次に、メッセージを延期したり、何かを要求したりするたびに、延期されたメッセージや応答を相関IDの現在の値と相関させます。
bus.Defer(time, new Something { CorrelationId = Data.CorrelationId });
bus.Send(new SomeRequest { CorrelationId = Data.CorrelationId });
したがって、延期されたメッセージと応答を、佐賀の現在の状態と概念的に相関させます。
そして、未処理のメッセージをすべて破棄したい場合は、サガの相関IDを新しい値にリセットするだけです。通常は値をのように設定しますsomethingWithBusinessMeaning/timestamp
。
このように、放棄されたメッセージはどのsagaインスタンスとも相関せず、事実上無視されます。
それは意味がありますか?