[英]SignalR via Azure Service Bus
设置SignalR以使用Azure Service Bus时,我必须遗漏一些东西。 我有我的App Service(API - Web API 2)设置来运行3个常量实例(当前),启动时,API使用Service Bus连接字符串并设置适当的主题前缀。
在前端,SignalR能够连接到我的API,但消息有时仅由客户端接收。 我的假设是客户端只接收来自它最初连接的服务器的消息。 这让我相信SignalR没有正确使用服务总线。 通过Azure查看服务总线时,我确实看到正在创建主题,但其中没有任何消息(我也看到订阅)。
所以,据我所知,客户端和服务器之间的SignalR仍然使用直接连接而不是通过服务总线。 请注意, 客户端正在使用API的URL来进行SignalR连接 - 这是正确的吗?
SignalRConfig (在app启动期间。)
var serviceBusConnectionString = configHelper.SignalR.ServiceBusConnectionString;
var serviceBusTopicPrefix = configHelper.SignalR.TopicPrefix;
Logger.Info("SignalR: configuring");
// Use the service bus, if specified.
if (serviceBusConnectionString != null && serviceBusTopicPrefix != null) {
Logger.Info("SignalR: using service bus");
GlobalHost.DependencyResolver.UseServiceBus(serviceBusConnectionString, serviceBusTopicPrefix);
}
app.MapSignalR();
上面的代码针对每个实例运行,我不知道这是否正确。 也许这就是我看到多个主题的原因,例如signalr_topic_my-app-staging_0
- 0到5。
请注意,我试图遵循这个(过时的)教程: https : //docs.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-with-windows-azure-service-bus
您的代码似乎正确,它应该为每个实例运行。
Service Bus中应该有6个主题:signalr_topic_ {TOPIC_PREFIX} _0到signalr_topic_ {TOPIC_PREFIX} _5。
每个实例是否使用相同的主题前缀名称? 如果他们使用不同的主题名称,那么这将解释您所看到的行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.