簡體   English   中英

從Webfarm調用SignalR客戶端

[英]Calling SignalR client from webfarm

我有以下郵件傳輸方案

客戶端->調用SignalR->調用NServiceBus->內部處理消息->使用結果調用NServiceBus網關服務->調用SignalR集線器->用結果更新客戶端。

在選擇是否使用SignalR與長輪詢時,我需要知道SignalR是否可擴展。 因此,在做作業時,我遇到了Azure Service Bus上的SignalR。 安裝程序在Global.asax應用程序啟動時完成。

最終,我需要能夠從NServiceBus處理程序內部執行此操作:

        var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
        context.Clients.Group(group).addMessage(message);

問題是上下文是否會增加,因為我(潛在地)從客戶端連接到的另一台計算機上調用它?

SignalR實施用來播種主題的分片模式又是什么? 我知道我可以將其配置為使用N個主題,但是實際上它是如何確定哪個消息去往哪個主題的,以及它是否與外部呼叫者PoV相關。

您應該能夠使用GlobalHost.ConnectionManager.GetHubContext在您已注冊的任何應用程序ServiceBusMessageBus為您IMessageBus通過SignalR的GlobalHost.DepenencyResolver 如果在應用程序中調用GlobalHost.DepenencyResolver.UseServiceBus(...) ,將為您完成此操作。

如果這樣做,將一條消息發布到Azure的服務總線每次調用addMessage或在其它任何一個集線器方法IHubContext從返回GetHubContext 如果有訂閱的客戶端連接到Web場中的其他節點,則其他節點將從服務總線中提取消息並將其中繼到訂閱的客戶端。

消息轉到哪個主題與外部呼叫者的PoV無關。 您可以使用多個主題來提高吞吐量,但是對於大多數用例來說,一個主題就足夠了。

如果選擇使用多個主題,則可以將消息轉到的主題實質上是隨機的。 唯一可以保證的是,來自同一發件人的郵件將進入同一主題。 這使SignalR可以按順序保留來自同一發送者的消息。

注意: SignalR尚未發布支持橫向擴展的正式版本。 1.1版將是第一個正式支持橫向擴展的版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM