Azure Service Bus多个QueueClient

时间:2019-04-01 14:01:00

标签: azure azureservicebus azure-servicebus-queues

创建多个队列客户端以侦听不同的服务总线队列的最佳实践是什么?有一个MessagingFactory类,但是Microsoft.ServiceBus.Messaging似乎不再可以作为nuget包使用(.net核心控制台应用程序)。

将QueueClient视为静态对象,从单例主机进程创建多个queueclient的推荐模式是什么?

赞赏反馈。

2 个答案:

答案 0 :(得分:0)

对于.net核心应用程序,可以使用Microsoft.Azure.ServiceBus代替Microsoft.ServiceBus.Messaging nuget。由于这是基于.net标准构建的,因此可以在框架和核心应用程序中使用。在此下可以使用类似于Microsoft.ServiceBus.Messaging的方法和类。检查here中是否有示例。

答案 1 :(得分:0)

能够使其工作,但是不能使用依赖项注入。任何有关改进此实现的建议将不胜感激。

Startup.cs

//托管服务 services.AddSingleton();

ServiceBusListener.cs

公共类ServiceBusListener:BackgroundService,IServiceBusListener     {

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        Console.WriteLine($"ServiceBusListener is starting.");

        Dictionary<string, QueueClient> queueClients = new Dictionary<string, QueueClient>();

        foreach (var queue in _svcBusSettings.Queues)
        {
            var svcBusQueueClient = new ServiceBusQueueClient(queue.Value, queue.Key);
            queueClients.Add(queue.Key, svcBusQueueClient.QueueClient);
        }


    }


}

ServiceBusQueueClient.cs

公共类ServiceBusQueueClient:IServiceBusQueueClient {         私有IQueueClient _queueClient;

    public QueueClient QueueClient
    {
        get { return _queueClient as QueueClient; }
    }

    public ServiceBusQueueClient(string serviceBusConnection, string queueName)
    {
        _queueClient = new QueueClient(serviceBusConnection, queueName);
        RegisterOnMessageHandlerAndReceiveMessages();
    }

}