11

通常の Azure キューでは、メッセージをポップしてから、いくつかの作業を行います。作業が完了するまでメッセージを削除したくありませんでした。

そのメッセージは、失敗と見なされてキューに再び表示されるまで、どのくらいの期間非表示のままになりますか?

例えば。

var message = myQueue.GetMessage();

 // Do Work ..

myQueue.DeleteMessage();

私の作業には 30 秒程度かかる場合があります。または、1 分か 2 分かかった場合はどうなりますか?

基本的に、別のワーカーがキューからメッセージをポップした場合に備えて、作業が完了する前にメッセージが再び利用可能になることは望ましくありません..このワーカーはまだ作業を行っています.

「非表示」時間を設定できますか?

4

2 に答える 2

18

「非表示」時間を設定できますか?

はい。メッセージを他の発信者に非表示にする時間を設定できます。の REST API ドキュメントを見ると、Get Messagesというパラメータが必要visibilitytimeoutです。このパラメーターは、指定された秒数の間メッセージを非表示にする役割を果たします。その期間が経過すると、メッセージは削除されなければ再び表示されます。

そのメッセージは、失敗と見なされてキューに再び表示されるまで、どのくらいの期間非表示のままになりますか?

.Net ストレージ クライアント ライブラリを使用している場合は、表示タイムアウト期間を指定するオプションがあります。Get Message可視性タイムアウトを指定できる場所については、ドキュメントを参照してください。これはライブラリのオプション パラメータであるため (ただし、REST API レベルでは必須)、ライブラリによって提供されるデフォルト値は 90 秒です。

于 2013-10-16T07:27:04.873 に答える
10

GetMessage() オーバーロードの 1 つに対するパラメーターとして可視性タイムアウトを指定できます。UpdateMessage() を使用して、メッセージの非表示を拡張することもできます。ただし、メッセージが 2 回処理されないことを保証することはできません。たとえば、コンシューマーが作業を完了した後、メッセージを削除する前に死亡した場合などです。Windows Azure キューは、少なくとも 1 回のセマンティクスを備えたベスト エフォート型の FIFO キューです。

于 2013-10-16T07:26:26.503 に答える