私はキューにメッセージを複数回挿入しないようにしたいと思います。一意性を強制するために使用できるID /名前はありますか?Azureキュー一意のメッセージ
5
A
答えて
8
Azureキューは、メッセージの順序とメッセージの一意性を保証しません。メッセージは「少なくとも1回」処理されますが、何も確実に2回処理されないので、「最大で1回」を保証するわけではありません。
同じメッセージを2回受信する準備ができているはずです。データの一部としてメッセージの本文にIDを入れることができます。
11
vtortolaかなりそれをカバーしましたが、私はなぜそれが少なくとも1回配信の詳細をもう少し追加したいと思います。
キューアイテムを読み取ると、そのアイテムはキューから削除されません。代わりに、それは見えなくなりますが、キューにとどまります。その不可視期間のデフォルトは30秒(最大2時間)です。その間、アイテムをキューから取り除いたコードは、キューメッセージにあったコマンドを処理してキューアイテムを削除するのに多くの時間を費やします。
タイムアウト時間に達する前にキューアイテムが削除されたとすると、すべて正常です。ただし、タイムアウト時間に達すると、キューアイテムは再び表示され、キューアイテムを保持しているコードはそれを削除しなくなる可能性があります。この場合、他の誰かが同じキューメッセージを読み込み、そのメッセージを再処理することができます。
実際のキューメッセージがタイムアウトすることができ、再表示されますので:
- あなたのキュー処理が冪等でなければならない - キューメッセージの操作は(レンダリングなどと同じ結果になる必要があります写真のサムネイル)。
- タイムアウトの調整について考える必要があります。コマンドが有効だが、処理に時間がかかりすぎるかもしれません。(誰かが25MPイメージをアップロードするまで、45秒のサムネイルレンダリングコードがうまくいきました)
- 正しく処理されないポイズンメッセージについて考える必要があります。例外がスローされるか、メッセージプロセッサが処理を中断させてメッセージを最終的にキューに再表示させる何らかの無効な条件が発生する可能性があります。 DequeueCount - キュー項目を読み込んだときにそのプロパティを表示し、3と同じ場合は、メッセージをテーブルまたはBLOBにプッシュし、そのメッセージをオフラインでデバッグするために通知を送信することを検討してください。
get-queue低レベルREST APIの詳細はhereです。これにより、Windows Azureキューメッセージ処理の詳細がわかります。
関連する問題
- 1. Azureサービスバス - キューの最後までのOnMessageAsyncでのReadメッセージ
- 2. AzurePHP - Azureキューのポーリング
- 3. Azureキューとテーブルストレージトランザクションのベストプラクティス
- 4. キューから複数のメッセージを一度に処理するWebJob
- 5. JMS一時キューが最初のメッセージを破棄します
- 6. JMSキューの遅延メッセージ
- 7. RabbitMQは一度だけキューからメッセージ数を取得する
- 8. AzureのWebJobsとキュー関連のメトリック
- 9. ローカルNServicebus Azureキューへの投稿
- 10. WebSphere MQバックアウト・キュー内のメッセージの入力キュー
- 11. あるキューから別のキューにMSMQメッセージをルーティングする
- 12. Azureブロブストレージ - 一意のブロブ名を自動生成
- 13. キュー内のMSMQメッセージを編集する
- 14. キュー内のメッセージを覗く方法
- 15. Stormの遅延キュー/メッセージ処理
- 16. JMSメッセージからキューへの再配信
- 17. システムi(iSeries、AS/400)メッセージ・キュー・オプション
- 18. JMSメッセージ - キューと関連付けます
- 19. WS - キューからメッセージを削除する
- 20. SONIC JMSキューにXMLメッセージを送信
- 21. 古いメッセージを持つ監視キュー
- 22. キュー間でメッセージを移動する
- 23. キューにメッセージを復元する
- 24. Azure WebJob出力ICollectorを介してキューに入れるメッセージのリストが遅いようです。
- 25. 遅延メッセージを配信し、一意性をチェックするメッセージキュー
- 26. SMTPメッセージIDはグローバルに一意ですか?
- 27. OpenCL複数のイン・オーダー・コマンド・キュー対単一のアウト・オブ・オーダー・キュー
- 28. .NET - Windows Azure Queueの質問 - キューのバックグラウンド作業
- 29. MySQL:サブクエリ:警告メッセージ意味
- 30. WebLogicとWebSphereとの統合 - 外部キューへのメッセージの送信