問題タブ [azure-servicebus-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 - .NETServiceバスキューとAzureキューサービスのどちらを選択するか
Azureアプリケーションに関する簡単な質問です。通信する必要のあるWebとワーカーの役割が多数ある場合、ドキュメントにはAzureQueueServiceを使用するように記載されています。
ただし、新しい.NETServiceBusがキューも提供するようになったことを読みました。これらは、はるかに詳細なAPIを提供しているように見えるため、より強力に見えます。.NSBはもっと面白そうに見えますが、分散アプリケーションでの使用を警戒するいくつかの問題があります。(たとえば、キューの有効期限...キューが時間どおりに更新されることを保証できない場合は、すべてを失う可能性があります!)。
誰かがこれらの2つのテクノロジーのいずれかを使用した経験があり、どちらを選択するかについてアドバイスを与えることができますか。
私のユースケースは実際にはWeb/ワーカーの役割が相互に通信できるようにするだけなので、サービスバスはより強力に見えますが、AzureQueueServiceが私が求めているものだと思います。しかし、私は自分自身を隅に追いやる前に、それの確認を本当に探しています:-)
前もって感謝します。
アップデート
休憩中に2つのシステムについて読んだことがあります。.NETサービスバスは、汎用の信頼性の高いメッセージングシステムを提供するのではなく、システムを統合するために特別に設計されているように見えます。Azureキューは分散されており、信頼性と拡張性に優れているため、.NSBキューは、Azure自体でホストされているコードには適していません。
回答ありがとうございます。
azure - サービス バス キューでメッセージを取得できません
ユーザーがボタンをクリックすると、サービス バス キューでメッセージを送信する小さな Java Web アプリがあります。jsp ページにメッセージを表示したいと考えています。でも電話したら
resultQM = service.receiveQueueMessage(queueName, opts);
次の例外が発生します。よろしくお願いします。
azure - 実世界で複数のキューから読み取る方法は?
ここに理論的な質問があります:
メッセージ キューイングを使用してアプリケーションを構築する場合、さまざまな目的でさまざまなデータ型をサポートする複数のキューが必要になります。20 個のキューがあるとします (たとえば、新しいユーザーを作成するためのキュー、新しい注文を処理するためのキュー、ユーザー設定を編集するためのキューなど)。
1 つの Web ロールと 1 つのワーカー ロールの「最小」を使用して、これを Windows Azure に展開します。
これら 20 個のキューすべてから適切な方法で読み取るにはどうすればよいでしょうか? これは私が念頭に置いていたことですが、これに関する実際の実際の経験はほとんどまたはまったくありません。
worker ロールの「メイン」クラスで 20 個のスレッドを生成するクラスを作成します。これらの各スレッドに、異なるキューをポーリングするメソッドを実行させ、各ポーリング間でこれらすべてのスレッドをスリープ状態にします (もちろん、スリープ時間を増やすバックオフ メカニズムを使用します)。
これにより、20 個のスレッド (または 21 個?) と 20 個のキューがアクティブにポーリングされることになり、多くの無駄なメッセージが発生します (空のキューをポーリングするたびに、メッセージとして課金されます)。
この問題をどのように解決しますか?
c# - Observable をクラウドとの間でシリアライズする方法
処理シーケンスを分割する必要があります (この質問のように、 .net RX を使用してデータ プロセッサのシーケンスを整理する方法)、Azure 環境で複数の計算ユニットに分割する必要があります。
アイデアは、Observable シーケンスを Azure Queues (または Service Bus) にシリアル化し、それを逆シリアル化することです。
生産者または消費者が失敗した場合、他の当事者は生産/消費を継続できるはずです。
そのためのエレガントな方法と使用するもの (Azure Queues または Service Bus) を提案できる人はいますか?
TCP Observable プロバイダー - http://rxx.codeplex.com/wikipage?title=TCP%20Qbservable%20Providerをそのような問題に使用した人はいますか?
azure - Azureワーカーロールのパフォーマンスに一貫性がない-問題
ExtraSmallインスタンスでAzureワーカーロールとWebロールがあります。
Service Bus BrokeredMessageを渡して、AzureWebロールからエンティティを更新しています。
エンティティを更新してテストしました。最初の3回はデータベースに反映するのに5秒かかりました。その後、更新ごとに30秒以上かかりました。Azureワーカーの役割でパフォーマンスが一貫していない理由がわかりませんか?誰かが知っているならあなたの考えを共有してください。
メッセージを同期的に送受信しています。
注:ワーカーの役割、更新ごとにデータベースを接続しています
コードサンプルWorkerRoleクラス
java - Windows Azure: 仲介メッセージの削除時のエラー
Azure Service Bus キューからメッセージをプルする Java アプリケーションに取り組んでいます。Java Azure API (com.microsoft.windowsazure.services) を使用しています。私が経験している問題は、仲介されたメッセージが処理された後に削除できないことがあるということです。
私のアプリケーションは、ピークロック受信モードを使用して、ServiceBusContract オブジェクトで receiveQueueMessage() メソッドを使用して、キューからメッセージをプルします。メッセージが正常に処理されたら、deleteMessage() メソッドを呼び出してキューからメッセージを削除します (このメソッドは、.NET API の Complete() メソッドに対応すると思います)。
ただし、このメソッド呼び出しが失敗する場合があります。com.sun.jersey.api.client.UniformInterfaceException 例外は、deleteMessage() によってコンソールに記録されますが、この例外はスローされません (以下に出力を生成します)。例外は、メッセージが見つからなかったことを示しているようです。この場合、メッセージはキューに残ります。実際、次に receiveQueueMessage() を呼び出すと、このメッセージが再び取得されます。その後、削除は 1 回か 2 回失敗し、その後成功します。その後取得したメッセージは正常に削除されます。
問題が発生するコードは次のとおりです。
問題が発生したときの出力の例を次に示します。
例外の URI が別のメッセージ ID を参照しているように見えることに注意してください (efa56a1c-95e8-4cd6-931a-972eac21563a、メッセージの ID は実際には 100790000086491 です)。これが失敗の鍵になるかどうかはわかりませんが、予感はします。
もう 1 つの興味深い観察結果: アプリケーションが開始された後、またはキューが空になった後に、キューから取得された最初のメッセージで常にエラーが発生するように見えます。その後のすべてのメッセージがこの種の問題を引き起こすことはないようです。
キューのロック期間は 2 分間で、メッセージの処理には 2 分間かかります。そのため、期限切れのロックが原因になることはありません。
何か案は?
filtering - Windows Azure でキュー内のメッセージをフィルター処理する
プロパティに基づいてメッセージをフィルタリングする方法はありますか? つまり、特定のプロパティでのみワーカー ロールがそれを取得するということですか?
c# - QueueClient.Receive()の非同期メソッド?
Webロールとワーカーロールを接続するためにサービスバスを使用しています。私のワーカーロールは継続的なループにあり、QueueClient.Receive()メソッドを使用してWebロールによって送信されたメッセージを受信しています。
ただし、この方法では、サービスバスキューにメッセージがない場合、次の行に移動してさらに実行するのではなく、メッセージを受信するまで数秒待機します。私はメッセージを受信するための非同期の方法があることを望んでいましたか?または、この待機時間を設定するための少なくともいくつかの方法はありますか?
QueueClientのmsdnドキュメントからこのBeginReceiveメソッドを見つけました 。これ が私の質問に対する答えになることを期待していましたが、このメソッドの使用方法がわかりません。メソッドパラメータは非同期コールバックとオブジェクトの状態ですが、それらが何であるかはわかりません。
何か案は?
更新: Sandrinoによる優れたソリューションのおかげで、非同期で動作します。しかし、非同期であることは今私にいくつかの問題を与えています。VSがクラッシュしています。問題が何であるかわからない。以下は、使用しているコードです。
労働者の役割:
VSを動作させてクラッシュさせるものを見逃していますか?BeginReceiveに移行する前は、iwがQueueClient.Receiveを使用していると、正常に動作し、クラッシュしなかったためです。
ありがとう
c# - Azure Service Bus メッセージが受信されない
Web ロールからワーカー ロールにメッセージを送信しています。以前は、これらのメッセージは適切かつ即座に受信されていましたが、すべてのメッセージの内容が同じであっても、突然一部のメッセージが受信されなくなりました。たとえば、あるメッセージを今送信すると、受信されませんが、その直後に別のメッセージを送信すると、最新のメッセージが受信されます。以前に受信されなかったものは、数秒後に突然受信されるか、有効期限が切れたときにデッド レター メッセージになることがあります。
問題が何であるかを理解できません。何かアイデアはありますか? または、この動作はサービスバスでは正常ですか?
これは、ワーカーロールでメッセージを受信する方法です
編集:
アップデート :
Web ロール: