4

Azureクラウドサービスアプリケーションには、Webロール(ここではシグナル接続)とワーカーロールの2つのロールがあります。

Webロールは、スケールアウトプロバイダーとしてAzureサービスバスを使用します。

特定の時点で、ワーカーロールは特定のイベントを発行します。このデータをハブに接続されているクライアントに直接送信したいと思います。

私の現在の実装では、ワーカーロールがWebロールがサブスクライブするサービスバスキューにメッセージを配置し、WebロールがHubContext呼び出しを介してこのメ​​ッセージをクライアントに転送します。

私の質問は、このメッセージをワーカーロールから接続されたクライアントに直接送信するにはどうすればよいですか?これまで、3つの方法を検討してきました。

  • 同じservicebusトピックを使用するように、WebロールのようにSignalrを構成します。-これは、ワーカーロールインスタンスがWebロールを対象としたトピックサブスクリプションから「メッセージを盗む」ため、意図したとおりに機能しませんでした。これは最もクリーンな方法のように思われますが、構成に問題があります。

  • .Netクライアントを使用してハブメッセージを送信します。これは、Webロールに不要な負荷がかかるだけでなく、上記の方法と比較してサービスバスメッセージの量が2倍になるため理想的ではありません。

  • トピックにSignalr互換のメッセージを手動で書き込みます-非常にハッキーで、重大な変更に成功します。

チームは現在、次のリリースのためにスケールアウトを書き直していることを知っていますが、これはいつか可能になるでしょうか?

編集:これがRabbitMq実装でサポートされていることに気づきました。

4

1 に答える 1

1

私の構成の問題が、最初の方法が機能しない原因のようです。ただし、ループ内のメッセージが 1 つ少なくても、その方法はエンド ツー エンドで (約 150 ミリ秒) 遅いようです。

変更を加える前に、スケールアウト作業によってこの方法が改善されるかどうかを確認します。

于 2013-02-26T16:44:14.630 に答える