Service Fabric中的Pub / Sub和OWIN

时间:2017-08-18 17:03:22

标签: azure signalr owin publish-subscribe azure-service-fabric

我正在Service Fabric中开发一个应用程序,它使用自托管SignalR(通过OWIN)向客户端发送实时数据。

在我的微服务中,我有一个无状态服务(S1),它从Pub / Sub代理接收数据,并将所述数据发送到通过SignalR连接的客户端。我使用this library在Service Fabric中实现Pub / Sub。我知道我可以使用Service Bus,RedisCache等作为Pub / Sub提供商,但我的团队决定尽量避免Service Fabric之外的任何选项。

关注this example我成功地将S1设置为订阅者。但是,只要我为自托管SignalR服务器添加代码,S1就会停止从Pub / Sub接收数据。

我已将错误缩小到以下代码块:

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
    // yield return new ServiceInstanceListener(serviceContext => new OwinCommunicationListener(Startup.ConfigureApp, serviceContext, ServiceEventSource.Current, "HttpEndpoint"));
    yield return new ServiceInstanceListener(p => new SubscriberCommunicationListener(this, p), "StatelessSubscriberCommunicationListener");
    yield return new ServiceInstanceListener(context => new FabricTransportServiceRemotingListener(context, this, new FabricTransportRemotingListenerSettings() { EndpointResourceName = "PubSubEndpoint" }), "StatelessFabricTransportServiceRemotingListener");
}

如图所示,SignalR服务器被禁用,Pub / Sub完美无缺。取消注释该行可使SignalR服务器和Pub / Sub停止工作。

任何人都可以帮助我理解为什么会这样吗?欢迎提出任何想法或建议。

1 个答案:

答案 0 :(得分:0)

请先生成SubscriberCommunicationListener。该框架尚未提供目标通信监听器名称,因此使用了第一个。

相关问题