创建多个队列客户端以侦听不同的服务总线队列的最佳实践是什么?有一个MessagingFactory类,但是Microsoft.ServiceBus.Messaging似乎不再可以作为nuget包使用(.net核心控制台应用程序)。
将QueueClient视为静态对象,从单例主机进程创建多个queueclient的推荐模式是什么?
赞赏反馈。
答案 0 :(得分:0)
对于.net核心应用程序,可以使用Microsoft.Azure.ServiceBus代替Microsoft.ServiceBus.Messaging nuget。由于这是基于.net标准构建的,因此可以在框架和核心应用程序中使用。在此下可以使用类似于Microsoft.ServiceBus.Messaging的方法和类。检查here中是否有示例。
答案 1 :(得分:0)
能够使其工作,但是不能使用依赖项注入。任何有关改进此实现的建议将不胜感激。
//托管服务 services.AddSingleton();
公共类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:IServiceBusQueueClient { 私有IQueueClient _queueClient;
public QueueClient QueueClient
{
get { return _queueClient as QueueClient; }
}
public ServiceBusQueueClient(string serviceBusConnection, string queueName)
{
_queueClient = new QueueClient(serviceBusConnection, queueName);
RegisterOnMessageHandlerAndReceiveMessages();
}
}