为服务总线中继绑定设置 Azure Service Fabric 侦听器

Posted

技术标签:

【中文标题】为服务总线中继绑定设置 Azure Service Fabric 侦听器【英文标题】:Setup a Azure Service Fabric Listener for Service Bus Relay Binding 【发布时间】:2017-08-20 17:08:31 【问题描述】:

我想在托管在 Azure 中的 Service Fabric 群集和我的专用网络之间设置 Azure 服务总线中继。

我无法通过 Service Fabric WCF 服务配置服务总线中继。

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()

    return new[]
    
        // Standard WCF Listener
        new ServiceInstanceListener(context =>
            new WcfCommunicationListener<IFooService>(
                wcfServiceObject: this,
                serviceContext: context,
                endpointResourceName: "WcfServiceEndpoint",
                listenerBinding: WcfUtility.CreateTcpListenerBinding()
            )
        ),
        // Service Bus Relay Listener
        new ServiceInstanceListener(context =>
        
            var wcfRelay = new WcfCommunicationListener<IFooService>(
                wcfServiceObject: this,
                serviceContext: context);
            wcfRelay.ServiceHost.AddServiceEndpoint(
                    typeof(IFooService),
                    new NetTcpRelayBinding(),
                    ServiceBusEnvironment.CreateServiceUri(
                        "sb",
                        "mynamespace.servicebus.windows.net",
                        "myservce"))
                .Behaviors.Add(new TransportClientEndpointBehavior
                
                    TokenProvider =
                        TokenProvider.CreateSharedAccessSignatureTokenProvider(
                            "RootManageSharedAccessKey",
                            "mykey")
                );

            return wcfRelay;
        )
    ;

【问题讨论】:

你能提供更多关于什么不起作用的信息吗?您是否收到某些特定错误?相同的配置是否适用于同一环境中的自托管 WCF 服务? 自托管的 WFC 工作正常,至于什么不工作。只是没有......没有例外,没有日志,它只是默默地阻止服务启动 【参考方案1】:
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()

    return new[]
    
        new ServiceInstanceListener(context =>
        
            var listener = new WcfCommunicationListener<IFooService>(
                serviceContext: context,
                wcfServiceObject: new FooService(),
                listenerBinding:  new WebHttpRelayBinding(EndToEndWebHttpSecurityMode.None,RelayClientAuthenticationType.None),
                address: new EndpointAddress( ServiceBusEnvironment.CreateServiceUri("https","[ServiceBusNamespace]","[RelayEndPoint]"))
                );

            var ep = listener.ServiceHost.Description.Endpoints.Last();

            ep.EndpointBehaviors.Add(
                new TransportClientEndpointBehavior()
                
                    TokenProvider = TokenProvider.CreateSharedSecretTokenProvider("owner","[issuerSecret]")
                );
            ep.EndpointBehaviors.Add(
                new ServiceRegistrySettings(discoveryType:DiscoveryType.Public));
            ep.EndpointBehaviors.Add(new WebHttpBehavior());

           return listener;
        )
    ;

【讨论】:

您能否详细说明您的解决方案?添加一些解释性文字?

以上是关于为服务总线中继绑定设置 Azure Service Fabric 侦听器的主要内容,如果未能解决你的问题,请参考以下文章

Azure 服务总线中继偶发性故障异常

Azure 服务总线消息生存时间设置 [关闭]

服务总线 1.1 和中继绑定

Service Fabric Actor 订阅 Azure 服务总线主题

C# 消息队列-Microsoft Azure service bus 服务总线

Azure 服务总线触发函数 - 绑定到 MessageReceiver