問題タブ [azure-storage-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自体でホストされているコードには適していません。
回答ありがとうございます。
c# - これは、T4テンプレートのAzureキュー構築に適した/好ましいパターンですか?
一貫性のあるシンプルな方法でAzureキューを構築するのに役立つT4テンプレートを作成しています。これを自己文書化して、ある程度一貫性のあるものにしたいと思います。
最初にファイルの先頭にキュー名を作成しました。キュー名は小文字にする必要があるため、ToLower()を追加しました。
パブリックコンストラクターは、組み込みのStorageClientAPIを使用して接続文字列にアクセスします。私はこれに対する多くの異なるアプローチを見てきましたが、ほとんどすべての状況で機能するものを手に入れたいと思っています。(アイデア?共有します)
キューが作成されているかどうかを確認するための不要なHTTPリクエストが嫌いなので、作成しました
static bool
。Lock(monitorObject)は必要ないと思うので、実装しませんでした。文字列を使用してコンマで解析する代わりに(ほとんどのMSDNドキュメントのように)、オブジェクトをキューに渡すときにオブジェクトをシリアル化します。
さらに最適化するために、JSONシリアライザー拡張メソッドを使用して8kの制限を最大限に活用しています。エンコーディングがこれを最適化するのに役立つかどうかわからない
キューで発生する特定のシナリオを処理するための再試行ロジックが追加されました(htmlリンクを参照)
Q:「DataContext」はこのクラスの適切な名前ですか?
Q:私が行った方法でキューアクション名に名前を付けるのは悪い習慣ですか?
私が行うべき追加の変更は何だと思いますか?
azure - 複数のAzureワーカーの役割が同じキューをポーリングすると、デッドロックまたはポイズンメッセージが発生しますか
シナリオ:
複数のワーカーロールまたは複数のスレッドを持つ1つのワーカーロールをスピンオフした場合。これにより、Azureキュー内の新しいメッセージがポーリングされます。
これが正しい設計アプローチであるかどうかを誰かが確認できますか?多くのワーカーロールが必要な理由は、PROCESSJOBを高速化するためです。アプリケーションはほぼリアルタイムである必要があります。つまり、メッセージが表示されたらすぐに、複雑なビジネスルールを適用し、AZUREDBにコミットする必要があります。3分あたり11,000のメッセージを期待しています。
ありがとうございました。
c# - Azure Queue Storage でのオブジェクト メッセージの受け渡し
オブジェクトを Azure キューに渡す方法を見つけようとしています。これを行う方法が見つかりませんでした。
これまで見てきたように、文字列またはバイト配列を渡すことができますが、これはオブジェクトの受け渡しにはあまり適していません。
カスタムオブジェクトをキューに渡す方法はありますか?
ありがとう!
performance - Azure ワーカー:ミューテックス方式で Azure キューからメッセージを読み取ります
私のワーカーロールの実行方法は次のとおりです。
パフォーマンス テストでは、ワーカーだけがメッセージを分析できるようにします (ワーカーの障害の問題は考慮していません)。
しかし、私のテストでは、2 つのワーカーが同じメッセージを受け取り、DequeueCount が 1 に等しい (両方のワーカー) を読み取ることができるようです。出来ますか?
ワーカーだけが「ミューテックス」の方法でメッセージを読み取れるようにする方法はありますか?
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キュー-メッセージが1回だけ読み取られることを確認できますか?
Azureキューを使用していて、キューから読み取るいくつかの異なるプロセスがあります。
私のシステムは、各メッセージが1回だけ読み取られることを前提とした方法で構築されています。
このMicrosoftの記事では、Azureキューには少なくとも1回の配信保証があると主張しています。これは、2つのプロセスがキューから同じメッセージを読み取ることができることを意味する可能性があります。
このStackOverflowスレッドは、 GetMessageを使用すると、非表示タイムアウトのためにメッセージが他のすべてのプロセスから非表示になると 主張しています。
GetMessage()を使用し、 DeleteMessageの前にメッセージの非表示時間を超えないことを前提とすると、各メッセージを1回だけ取得すると想定できますか?
azure - Azure 抽象化ライブラリ: Lokad と CloudFx の違いと推奨事項は何ですか?
Lokad と CloudFx の間で、どのフレームワークが Windows Azure での高品質でスケーラブルなクラウド ソリューションの継続的な迅速な開発をサポートするのに最適かを検討しています。Lokad と CloudFx はどちらも、さまざまな Azure サービスの上に優れた抽象化レイヤーを提供するだけでなく、スケーリングのためのフレームワークも提供しているようです。
Lokad は GitHub で入手できますが、CloudFx フレームワークのソースはリリースされていません。どちらも著作権で保護されていますが、寛容なライセンスが適用されます。CloudFx は Microsoft によって開発され、Lokad はサードパーティによって開発されました。Lokad の開発は緩いように見えますが (最新の更新は 2012 年 2 月/4 月)、CloudFx は 2012 年を通して複数の更新がありました。現在、包括的な API と Microsoft による所有権のために CloudFx に頼っています。
いずれかのフレームワークと推奨事項を使用した経験は何ですか? どちらかに対する代替アプローチはありますか?