【发布时间】:2021-03-09 21:08:52
【问题描述】:
我们正在尝试实施 Azure 服务总线来管理用户“工作队列”
背景:
我们有一个 Web UI 将新项目推送到 Web API,这些项目被持久化到数据库,然后推送到服务总线队列。所有消息都有一个属性,表示谁可以处理该消息。为了让用户能够选择分配给他们的消息,我正在考虑创建一个主题,其中包含过滤该属性的订阅。
接近
要实现上述能力:
- 我需要在同一个 Web API 中注册队列的发送者和主题的发送者。我尝试将两个发件人添加为单例,但在 DI 期间,我如何选择要使用的发件人?
services.TryAddSingleton(implementationFactory =>
{
var serviceBusConfiguration = implementationFactory.GetRequiredService<IMessagingServiceConfiguration>();
var serviceBusClient = new ServiceBusClient(serviceBusConfiguration.IntakeQueueSendConnectionString);
var serviceBusSender = serviceBusClient.CreateSender(serviceBusConfiguration.IntakeQueueName);
return serviceBusSender;
});
services.TryAddSingleton(implementationFactory =>
{
var serviceBusConfiguration = implementationFactory.GetRequiredService<IMessagingServiceConfiguration>();
var serviceBusClient = new ServiceBusClient(serviceBusConfiguration.TopicConnectionString);
var topicSender = serviceBusClient.CreateSender(serviceBusConfiguration.TopicName);
return topicSender;
});
我正在使用上述设置将服务添加为单例,并且我可以单独发送和接收来自主题或队列的消息。
当我在构造函数中使用 DI 来使用它时,如何注册这两个实现并选择应该注入哪个实现。
【问题讨论】:
标签: .net-core azureservicebus azure-servicebus-queues azure-servicebus-topics