0

一部のメッセージが別のメッセージの完了に依存しないシナリオがあります。したがって、一連のメッセージを処理するには、別のメッセージを最初に処理する必要があるという前提条件があります。前提条件メッセージは長時間実行されるプロセスであり、処理に最大 30 分かかる場合があります。

私が望むのは、前提条件が完了していないと感じたときにすべてのサブスクライバーから 5 分間メッセージを非表示にし、5 分後に再び使用可能になり、処理できない場合は次の 5 分間非表示にすることです。

セッションを使用できることがわかり、遅延が解決策になる可能性がありますが、そのようにしたくありません。そのため、遅延メッセージを非キュー ストレージに保持するためにストレージを維持する必要があります。

もう 1 つの方法は、メッセージに対してピーク ロックを実行し、それを放置してロックの有効期限が切れるのを待って、やがてキューに再表示されるようにすることです。

これを行うより良い方法はありますか?

4

1 に答える 1

0

これを実現するには、いくつかの方法があります。メッセージを受け取ったら、延期することを選択できます。これにより、アクティブなキューから削除され、後で MessageId を使用してこのメ​​ッセージを具体的に要求する必要があります。あなたのシナリオでは、スケジュールされたメッセージ (以下を参照) を使用できる場合がありますが、それには、メッセージを受信して​​から、次を使用して別のメッセージをスケジュールする必要があります 。 .servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx

于 2014-03-07T14:25:16.510 に答える