You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Service Fabric StatelessService多监听器共存时内部Broker消息投递失败

问题描述

在本地单节点Windows集群中部署了一个无状态服务(StatelessService),核心功能为监听并处理Azure Service Bus消息,同时希望该服务能监听集群内部的SoCreate Pub/Sub Broker。

正常场景

当单独注册不同类型的监听器时(两个自定义Service Bus监听器,或一个类型为FabricTransportServiceRemotingListener的内部Broker监听器),均能正常工作。但同时注册三个监听器时,内部Broker无法向StatelessService投递消息。

Service Bus监听器

通过为两个订阅分别注册自定义Service Bus监听器(实现ICommunicationListener接口),完成Azure Service Bus消息订阅者的配置,通过重写CreateServiceInstanceListeners方法实现:

private readonly ServiceBusHandler1 _handler1 = new();
private readonly ServiceBusHandler2 _handler2 = new();

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
    var serviceInstanceListeners = new List<ServiceInstanceListener>();
           
    serviceInstanceListeners.Add(new ServiceInstanceListener(context => 
        new ServiceBusCommunicationListener(_handler1, /*some other input params*/), name: "ServiceBusListener1"));
    
    serviceInstanceListeners.Add(new ServiceInstanceListener(context => 
        new ServiceBusCommunicationListener(_handler2, /*some other input params*/), name: "ServiceBusListener2"));
       
    return serviceInstanceListeners;
}

FabricTransportServiceRemotingListener监听器

同理,通过以下方式完成内部Broker监听器的注册,可正常工作:

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
    var serviceInstanceListeners = new List<ServiceInstanceListener>();
           
    serviceInstanceListeners.Add(new ServiceInstanceListener(context => 
        new FabricTransportServiceRemotingListener(context, this), name: "SubscriberStatelessServiceRemotingListener"));
       
    return serviceInstanceListeners;
}

异常场景

当合并注册所有监听器时,内部Broker无法投递队列中的消息:

private readonly ServiceBusHandler1 _handler1 = new();
private readonly ServiceBusHandler2 _handler2 = new();

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
    var serviceInstanceListeners = new List<ServiceInstanceListener>();
           
    serviceInstanceListeners.Add(new ServiceInstanceListener(context => 
        new ServiceBusCommunicationListener(_handler1, /*some other input params*/), name: "ServiceBusListener1"));
    
    serviceInstanceListeners.Add(new ServiceInstanceListener(context => 
        new ServiceBusCommunicationListener(_handler2, /*some other input params*/), name: "ServiceBusListener2"));

    serviceInstanceListeners.Add(new ServiceInstanceListener(context => 
        new FabricTransportServiceRemotingListener(context, this), name: "SubscriberStatelessServiceRemotingListener"));
       
    return serviceInstanceListeners;
}

我意识到可能需要向Broker包团队咨询,但希望先确认是否存在Service Fabric相关的遗漏配置或问题。


内容的提问来源于stack exchange,提问作者Isak Engström

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 20:47:47