問題タブ [azure-queues]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure - Windows Azureのステージング<->本番環境により、テーブルストレージで競合とエラーが発生する
昨日、ステージング<->プロダクションの役割を交換しようとしたときに、ひどい問題/経験がありました。
設定は次のとおりです。
キューからメッセージを取得するworkerroleがあります。これらのメッセージはロールで処理されます。(テーブルストレージの挿入、dbの選択など)。これは、作成する必要のあるテーブルストレージポストの数に応じて、キューメッセージごとに1〜3秒かかる場合があります。すべてが終了すると、彼はメッセージを削除します。
交換時の問題:
私たちのステージングプロジェクトがオンラインになったとき、私たちのプロダクションワーカーの役割はエラーになり始めました。
ロールがキューメッセージを処理したいとき、それは「EntityAlreadyExists」エラーの一定の流れを与えました。これらのエラーのため、キューメッセージは削除されませんでした。これにより、キューメッセージがキューに戻され、処理などに戻されました。
これらのキューメッセージの内部を調べて、それらで何が起こるかを分析すると、実際には処理されたが削除されていないことがわかりました。
これらの誤ったメッセージを削除しても、問題は解決しませんでした。新たにキューメッセージも処理されませんでしたが、これらはまだ処理されておらず、テーブルストレージレコードも追加されていませんでした。これは非常に奇妙に聞こえます。
ステージングと本番環境の両方を削除し、本番環境に再度公開すると、すべてが正常に機能し始めました。
考えられる問題?
実際に何が起こったのかわかりません。
- たぶん、両方の役割が同じメッセージを受け取り、1つは投稿を行い、もう1つはエラーになりましたか?
- ... ???
可能な解決策)?
この「問題」を解決する方法について、いくつかのアイデアがあります。
- ポイズンメッセージをシステムにフェイルオーバーさせますか?デキューカウントがXを超えたら、そのキューメッセージを削除するか、別の「poisonqueue」に配置する必要があります。
- EntityAlreadyExistsエラーをキャッチし、そのキューメッセージを削除するか、別のキューに入れます。
- ... ????
複数の役割
複数の役割を設定するときに同じ問題が発生すると思いますか?
どうもありがとう。
2012年2月24日編集-追加情報
- 実際にGetMessage()を使用します
- キュー内のすべてのアイテムは一意であり、テーブルストレージに一意のメッセージを生成します。プロセスに関するもう少しの情報:ユーザーが何かを投稿し、特定の他のユーザーに配布する必要があります。そのユーザーから生成されたメッセージには、一意のID(GUID)があります。このメッセージはキューに投稿され、ワーカーロールによって取得されます。メッセージは他のいくつかのテーブル(partitionkey-> UserId、rowkey->ティック単位のタイムスタンプと一意のメッセージID)に分散されます。したがって、通常の状況で同じメッセージが投稿される可能性はほとんどありません。
- 一部のメッセージは10〜20個のテーブルに分散される可能性があるため、非表示のタイムアウトは論理的な説明になる可能性があります。これは、バッチオプションなしで10-20挿入を意味します。この不可視タイムアウトを設定または拡張できますか?
- 例外のためにキューメッセージを削除しないことも、ポイズンメッセージフェイルオーバーをまだ実装していないため、説明になる可能性があります;)。
java - CloudQueueMessage 経由で任意のオブジェクトを渡すにはどうすればよいですか?
CloudQueueMessage
「Hello World」を挿入したいので、次のように書きます。
パーフェクトだ。
私の問題は、次のように「Hello World」の代わりにオブジェクトを配置したいということです:
しかし、コンパイラは次のように指示するため、許可しません。
どうすれば私が望むものを達成できますか?
windows-phone-7 - Windows Phone からキュー メッセージを送信するには?
Windows Phone 用の Windows Azure ツールキットを使用していますが、キュー メッセージをクラウド サービスに送信するのが困難です。これが私のコードです:
AddMessage メソッドで常に null 例外が発生します。何かアイデアはありますか?
azure - 実際のシナリオでメッセージ キューイングを使用する方法は?
わかりました。メッセージ キューイングに興味があります。私はすでにこの主題について多くの研究を行ってきました. 「windows azure のプログラミング」(Azure キューについて) を読んだり、Azure サービス バスに関するチュートリアルや情報をたくさん読んだり、メッセージング パターンに関するチャネル 9 のビデオを見たりしました。
しかし、私が理解していないのは、これを実際のシナリオでどのように使用するのでしょうか? すべての例は、単一の文字列またはいくつかのデータを含むオブジェクトをキューに入れ、「反対側」のキューからそれを読み取ります。しかし、そのデータをどう処理すればよいか、どうすればわかりますか? たとえば、Customer、Order、および Address をデータベースに保存しようとすると、これら 3 つのオブジェクトをキューに入れ、反対側で読み取り、データベースに入れます。この種のオブジェクトをどう処理すればよいかを知るにはどうすればよいですか?
私が持っているいくつかの質問:
- キューに入れるデータの種類。コマンドは、読み取り時に実行されるため、キュー内のすべてが同じインターフェイスを持ち、オブジェクト自体が何をすべきかを判断しますか?
- どのレイヤー間でキューを使用しますか? 私はサービス層のキューに物を入れ (検証された後)、データベースに入れることができるようにデータ アクセス層でそれを読み取ることを考えていました。
- 何列に並べばいいですか?接続したいレイヤー間に1つのキューだけですか、それともレイヤー間に複数のキューがありますか?
- この形式の疎結合により、後で処理できるようにリクエストをキューに入れることができます (たとえば、データベースを再起動する場合)。それは素晴らしいことですが、データを書き込む代わりに読み取りたい場合はどうすればよいでしょうか? 次に、データベースがオンラインになっている必要があります。また、キューを介してデータを読み取る必要がありますか?それとも、サービス レイヤーがデータ アクセス レイヤーからデータをプルしてプレゼンテーション レイヤーに渡すだけでよいでしょうか?
頭の中をぐるぐる回っていた質問のほとんどがそれだったと思います。誰かが私のためにこれを解決できることを願っています。
azure - メッセージを Azure キューに再送信する際に問題はありますか
Azure にスケジューラといくつかのワーカーがあります。スケジューラはメッセージをキューに入れ、ワーカーはそれらのメッセージをプルして処理します。特定のしきい値に達したら、テーブル ストレージからデータベースにデータを移動する必要があるシナリオに入りました。これらのアイテムは、古いものから順に処理する必要があります。そのしきい値が満たされると、他のすべての項目が順番に処理されます。転送をトリガーした現在のメッセージは、行末に詰めて再処理する必要があります。
それで、私の質問の要点に...
メッセージをそのままキューに再送信するだけで問題ありませんか?それとも問題が発生する可能性はありますか?
同僚は、「彼は何か特別なことをする必要があることについて何かを読んだかもしれないが」と述べました.しかし、私は彼の疑いを確認するものをまだ見ていないので、安全のためにここで質問をすると思いました.
azure - Azure Storage キューからメッセージを 2 回取得することはできますか?
ワーカーがキューからメッセージを処理できなかった場合、メッセージが再び表示されるようになり、これに対してコーディングする必要があることを知っています (べき等)。しかし、ワーカーがメッセージを 2 回デキューできる可能性はありますか? ログに基づいて、この動作が見られるようですが、その理由はわかりません。次のメッセージを取得するまでの間にメッセージを削除していますが、もう一度取得したようです。
windows-services - Windowsサービスでサービスバスメッセージを送信できますか
Windows サービスで Azure サービス バス メッセージを送信できますか?
最近、Azure キューにメッセージを送信する Windows NT サービスを構築しました。しかし、それは失敗しました。2 つのテスト コンソール アプリケーションを作成しました。1 つは Windows NT サービスと同じコードを使用して Service Bus メッセージを送信し、もう 1 つはメッセージを受信します。テスト コンソール アプリケーションは、メッセージを正常に送受信します。私の Windows NT サービスでは、メッセージやエラーはスローされません。
私が知りたいのは、Azure Service Bus Message が Windows NT Service でサポートされているかどうかです。
私のアプリケーションはワーカー ロールでも Web ロールでもありません。これは単なる Windows NT サービスです。
azure - WindowsAzureキューを使用してキュー内のメッセージをロックする
WindowsAzureメッセージキューを使用しています。メッセージを受け取ったときにキュー内のメッセージをロックする方法があるかどうか知りたいですか?
azure - ループなしでキューから複数のメッセージを受信する
Azure Service Bus を使用して、webrole と workerrole でメッセージを管理しています。
ループを使用せずにキューから複数のメッセージを一度に取得する方法を知る必要があります。