C# 从webfarm调用SignalR客户端

C# 从webfarm调用SignalR客户端,c#,.net,signalr,nservicebus,azureservicebus,C#,.net,Signalr,Nservicebus,Azureservicebus,我有以下消息传输场景 客户端->调用信号器->调用NServiceBus->内部处理消息->使用结果调用NServiceBus网关服务->调用信号器集线器->使用结果更新客户端 在选择是否使用SignalR与长轮询时,我需要知道SignalR是否可伸缩。所以在做作业的时候,我在Azure服务总线上遇到了信号员。安装在Global.asax应用程序启动时完成 最终,我需要能够从NServiceBus处理程序内部做到这一点: var context = GlobalHost.Conn

我有以下消息传输场景

客户端->调用信号器->调用NServiceBus->内部处理消息->使用结果调用NServiceBus网关服务->调用信号器集线器->使用结果更新客户端

在选择是否使用SignalR与长轮询时,我需要知道SignalR是否可伸缩。所以在做作业的时候,我在Azure服务总线上遇到了信号员。安装在Global.asax应用程序启动时完成

最终,我需要能够从NServiceBus处理程序内部做到这一点:

        var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
        context.Clients.Group(group).addMessage(message);
var context=GlobalHost.ConnectionManager.GetHubContext();
context.Clients.Group(Group).addMessage(message);
问题是上下文是否会被提升,因为我(可能)是从另一台机器调用它,而不是从客户端连接的机器调用它


另外,signer实现用于为主题种子的切分模式是什么?我知道我可以将其配置为使用N个主题,但是,它实际上是如何确定哪些消息指向哪些主题的,以及它是否与外部调用方PoV相关。

您应该能够在任何应用程序中使用
GlobalHost.ConnectionManager.GetHubContext
,在这些应用程序中,您已经通过信号器注册了
ServiceBusMessageBus
作为您的
IMessageBus
GlobalHost.depenencycyrolver
。如果在应用程序中调用
GlobalHost.depenencycyrolver.UseServiceBus(…)
,则可以完成此操作

如果执行此操作,则每次调用
addMessage
或从
GetHubContext
返回的
IHubContext
上的任何其他集线器方法时,都会向Azure服务总线发布一条消息。如果有订阅的客户端连接到web场中的其他节点,则其他节点将从服务总线拾取消息并将其中继到订阅的客户端

消息指向的主题与外部调用方的PoV不相关。您可以使用多个主题来提高吞吐量,但对于大多数用例,一个主题就足够了

如果您选择使用多个主题,您可以将消息的主题视为基本上是随机的。唯一可以保证的是,来自同一发件人的邮件将转到同一主题。这允许SignalR按顺序保存来自同一发送者的消息


买主须知:Signal尚未发布支持扩展的正式版本。1.1版本将是第一个正式支持扩展的版本。

您应该能够在任何应用程序中使用
GlobalHost.ConnectionManager.GetHubContext
,在这些应用程序中,您已经通过信号器的
GlobalHost.depenencycyrolver
注册为
IMessageBus
。如果在应用程序中调用
GlobalHost.depenencycyrolver.UseServiceBus(…)
,则可以完成此操作

如果执行此操作,则每次调用
addMessage
或从
GetHubContext
返回的
IHubContext
上的任何其他集线器方法时,都会向Azure服务总线发布一条消息。如果有订阅的客户端连接到web场中的其他节点,则其他节点将从服务总线拾取消息并将其中继到订阅的客户端

消息指向的主题与外部调用方的PoV不相关。您可以使用多个主题来提高吞吐量,但对于大多数用例,一个主题就足够了

如果您选择使用多个主题,您可以将消息的主题视为基本上是随机的。唯一可以保证的是,来自同一发件人的邮件将转到同一主题。这允许SignalR按顺序保存来自同一发送者的消息


买主须知:Signal尚未发布支持扩展的正式版本。1.1版将是第一个正式支持扩展的版本。

感谢您的专业知识!回答了我的问题。谢谢你的专业知识!回答了我的问题。