私はキューにメッセージを複数回挿入しないようにしたいと思います。一意性を強制するために使用できる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のストレージ・キュー・メッセージが
- 2. メッセージをAzureキューにスケジューリングするメカニズム
- 3. キューからメッセージを受信しているときに、Azureサービスバスのキュー
- 4. Azureサービスバス - キューの最後までのOnMessageAsyncでのReadメッセージ
- 5. Azureキュー - 機能 - メッセージの可視性 - 作業者?
- 6. C#でAzureキューのメッセージ長を取得する
- 7. Rebus - 遅延メッセージを別のキューに送信する(Azure ServiceBus)
- 8. Azure WebJob Service Busエラー時にキューのinfrontメッセージ
- 9. Azure関数の起動後にキューからメッセージが消える
- 10. AzurePHP - Azureキューのポーリング
- 11. Azureサービスバス一意のサブスクリプション名(スケーリング時)
- 12. 単一のTCPチャネルは、Azureのサービスバスで、Redisのキャッシュ、キューなど
- 13. サービスキューのキュー内のメッセージ数
- 14. キューから複数のメッセージを一度に処理するWebJob
- 15. JMS一時キューが最初のメッセージを破棄します
- 16. JMSキューの遅延メッセージ
- 17. Azureの応答キュー管理
- 18. Azureキューとテーブルストレージトランザクションのベストプラクティス
- 19. Azure Automationのキューに追加
- 20. AzureロジックApp - キュー内のメッセージの完了に失敗しました
- 21. キューから一度だけメッセージを読み取る方法
- 22. kafkaメッセージをクリックハウスに一括してキューに入れるには
- 23. RabbitMQは一度だけキューからメッセージ数を取得する
- 24. する方法Pythonを使用してAzure関数からAzureのキューにメッセージを送信しますか?
- 25. AzureキューでトリガーされたWebジョブのメッセージのバッチ内のアイテム数を確認する方法はありますか?私Azureのキューに
- 26. トピックを含むメッセージをAzureに送信サービスバスHTTP POSTによるキュー?
- 27. 手作業で作成されたazureキューに遅延されたメッセージ
- 28. あるキューから同じキュー・マネージャ内の別のリモート・キューにメッセージをプッシュ
- 29. WebSphere MQバックアウト・キュー内のメッセージの入力キュー
- 30. あるキューから別のキューにMSMQメッセージをルーティングする