2017-10-23 22 views
1

私はAzure Storage Queuesを使用してメッセージをポストしてから、そのメッセージをdbテーブルに書き込みました。しかし、キューのメッセージの処理中にエラーが発生した場合、メッセージはポイズンキューに書き込まれることに気付きました。ここでAzureストレージキュー - ポイズンキューのメッセージを処理する

は私のアプリの設定にいくつかの背景です:

AzureのWebアプリケーション - >キュー

Azureの機能にメッセージを書き込み - >キュートリガはメッセージを処理し、デシベル

に内容を書き込み、

INSERTに失敗したdbスキーマに問題がありました。各メッセージは5回再試行されました。これはキューメッセージの再試行のデフォルトであると考えられ、5回目の試行後にメッセージがポイズンキューに置かれました。

dbスキーマはその後修正されましたが、今はpoisonキューのメッセージを処理する方法がありません。

私の質問では、ポイズンキューに書き込まれたメッセージを処理し、それらをデータベースに挿入する方法がありますか?あなたの特定の問題については

答えて

1

、私はこのポストの質問部分に言及したソリューションをお勧めします:Azure: How to move messages from poison queue to back to main queue?

を== $"{queueName}-posion"

+0

これは、「破損した」メッセージが永遠にリサイクルされる場合の最善の方法であるとは確信していません。 – alwayslearning

+0

@alwayslearning合意された、それで私は 'この特別な問題のために'と言ったのです。そのコードは、最近の不具合によって引き起こされたポイズンメッセージをポンピングするために短い時間だけ実行され、次に削除されます。コードは、グリッチによって引き起こされなかった非常に古いメッセージ(タイムスタンプ分)も無視することができます。 – sANDwORm

+0

私の同意するシナリオでは、メッセージが元のキューにコピーされ、dbが修正されたので再度処理することになります。だからこそありがとう。 ただし、これは運用環境でどのように機能しますか。別のエラーが発生する可能性があります。また、@alwayslearningによると、メッセージは永遠に再試行される可能性があります。メッセージがキューに追加されたときに誰かに通知すると、どのような手作業のステップを使用できるかを知りたいのです。 – laffaner

0

次の2つのオプション

  1. を持って毒キューの名前に注意してください。ポイズンキューに追加されたメッセージによってトリガされる別の機能を追加します。この関数では、内容をdbに追加することができます。このアプローチの詳細については、hereを参照してください。もちろん、この関数がメッセージの処理に失敗した場合でも、デキューカウントを確認して、手動介入が必要な通知を送信することができます。
  2. キューを処理する関数にint 'dequeueCount'パラメータを追加し、5回の再試行でメッセージをポイズンキューに移動するのではなく、失敗を記録します。たとえば、手動介入が必要であることを通知する電子メールを送信することができます。
+0

ありがとう、それは私が探していたものです:) githubドキュメントへの手動の介入についても触れていますが、デキューカウントを超過したメッセージに対してはどのような手動手順を取ることができますか? たとえば、Azure Storage Explorerを使用していて、ポイズンキューのメッセージが表示されます。しかし、私はメッセージで何もすることができないようです。メッセージをデキューするオプションがありますが、この後にメッセージがどこに行くのかわかりません。 私は青空関数(あなたが推測しているように)をかなり新しくしているので、それをよく理解しようとしています。 – laffaner

+0

私はそれを試していませんが、ポイズンキューにメッセージが追加され、メッセージが正常に処理されたときに別のAzure関数をトリガーすると、msgがポイズンキューから削除されると仮定します。結局、あなたが達成したいことではない - プロセスが失敗したmsgs。 – alwayslearning

+0

それでは、メインキュー用とポイズンキュー用の2つの機能が同じ処理を行います。しかし、それが私が遭遇したもの以外の問題であり、メッセージが壊れている場合、それは常に壊れたメッセージを再試行しないでしょうか?またはデキューカウントも毒キューでキックされますか? – laffaner

関連する問題