【发布时间】:2021-08-26 01:03:33
【问题描述】:
我正在寻找用于在 ASP.Net Web 应用程序(使用 .Net Core 5)中配置 Azure.Storage.Queues 的代码示例,以便通过 DI 将 QueueClient 注入到我的服务类中。 谁能帮我指出正确的方向吗?
【问题讨论】:
我正在寻找用于在 ASP.Net Web 应用程序(使用 .Net Core 5)中配置 Azure.Storage.Queues 的代码示例,以便通过 DI 将 QueueClient 注入到我的服务类中。 谁能帮我指出正确的方向吗?
【问题讨论】:
在启动时配置服务:
services.AddAzureClients(builder =>
{
// Use the environment credential by default
builder.UseCredential(new DefaultAzureCredential());
builder.AddQueueServiceClient(Configuration.GetSection("StorageConnectionString"))
.ConfigureOptions(c => c.MessageEncoding = Azure.Storage.Queues.QueueMessageEncoding.Base64);
});
类中的实现是:
public class AzureQueueService : IQueueService
{
private readonly QueueServiceClient _queueServiceClient;
public AzureQueueService(QueueServiceClient queueServiceClient)
{
this._queueServiceClient = queueServiceClient;
}
public void SendMessageToQueue(MyMessage message)
{
this._queueServiceClient.GetQueueClient("my-queue-name")
.SendMessage(JsonSerializer.Serialize(message, new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }));
}
}
【讨论】:
可以使用函数/属性创建一个接口,该接口将返回队列客户端,然后实现该接口以注入 DI,希望下面的代码会有所帮助。
public interface IQueueService
{
QueueClient GetQueueClient();
}
public class AzureQueueService : IQueueService
{
string azureStorageAccountConnectionString;
string queueName;
QueueClient queueClientInstance;
public AzureQueueService(IConfiguration configuration)
{
azureStorageAccountConnectionString = configuration[Constants.KEY_AZURE_STORAGE_ACCOUNT_CONNECTION_STRING];
queueName = configuration[Constants.KEY_QUEUE_NAME];
queueClientInstance = new QueueClient(azureStorageAccountConnectionString, queueName);
}
public QueueClient GetQueueClient()
{
return queueClientInstance ;
}
}
现在可以在依赖注入中注入 AzureQueueService
【讨论】: