Azureクラウドサービスアプリケーションには、Webロール(ここではシグナル接続)とワーカーロールの2つのロールがあります。
Webロールは、スケールアウトプロバイダーとしてAzureサービスバスを使用します。
特定の時点で、ワーカーロールは特定のイベントを発行します。このデータをハブに接続されているクライアントに直接送信したいと思います。
私の現在の実装では、ワーカーロールがWebロールがサブスクライブするサービスバスキューにメッセージを配置し、WebロールがHubContext呼び出しを介してこのメッセージをクライアントに転送します。
私の質問は、このメッセージをワーカーロールから接続されたクライアントに直接送信するにはどうすればよいですか?これまで、3つの方法を検討してきました。
同じservicebusトピックを使用するように、WebロールのようにSignalrを構成します。-これは、ワーカーロールインスタンスがWebロールを対象としたトピックサブスクリプションから「メッセージを盗む」ため、意図したとおりに機能しませんでした。これは最もクリーンな方法のように思われますが、構成に問題があります。
.Netクライアントを使用してハブメッセージを送信します。これは、Webロールに不要な負荷がかかるだけでなく、上記の方法と比較してサービスバスメッセージの量が2倍になるため理想的ではありません。
トピックにSignalr互換のメッセージを手動で書き込みます-非常にハッキーで、重大な変更に成功します。
チームは現在、次のリリースのためにスケールアウトを書き直していることを知っていますが、これはいつか可能になるでしょうか?
編集:これがRabbitMq実装でサポートされていることに気づきました。