【问题标题】:Use Azure.Storage.Queues in ASP.Net - configure for DI在 ASP.Net 中使用 Azure.Storage.Queues - 为 DI 配置
【发布时间】:2021-08-26 01:03:33
【问题描述】:

我正在寻找用于在 ASP.Net Web 应用程序(使用 .Net Core 5)中配置 Azure.Storage.Queues 的代码示例,以便通过 DI 将 QueueClient 注入到我的服务类中。 谁能帮我指出正确的方向吗?

【问题讨论】:

    标签: .net azure


    【解决方案1】:

    在启动时配置服务:

    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 }));
            }
        }
    
    

    【讨论】:

      【解决方案2】:

      可以使用函数/属性创建一个接口,该接口将返回队列客户端,然后实现该接口以注入 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

      【讨论】:

        猜你喜欢
        • 2014-03-22
        • 1970-01-01
        • 1970-01-01
        • 2015-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多