1

NServiceBus3.2.7の使用。MarkAsCompleteを呼び出す場合(延期されたメッセージが送信されている間、人は注文をキャンセルします。)MarkAsCompleteを呼び出すと、サガは削除されるようですが、以前に延期されたメッセージはまだタイムアウトキューにあります。最終的に処理すると、SagaNotFound例外に巻き込まれます。正当なサガが見つからなかった場合と、注文がキャンセルされたためにサガが削除されたためにスローされた場合との違いを明確に伝えたいと思います。

Ravenから遅延メッセージを削除するにはどうすればよいですか?

4

1 に答える 1

2

ここでは、タイムアウトとキャンセルの間に固有の競合状態があります。キャンセルが発生したときにタイムアウトがすでに配信されている可能性があるため、タイムアウトをクリアできません。

NServiceBusがSagaNotFoundを例外ではなくイベントとして発生させるのは、まさにこの理由によるものです。

お役に立てば幸いです。

于 2012-12-31T14:23:07.740 に答える