Estoy buscando un ejemplo de código para configurar Azure.Storage.Queues en una aplicación web ASP.Net (usando .Net Core 5) para que QueueClient se inyecte a través de DI en mi clase de servicio. ¿Puede alguien ayudarme a señalarme en la dirección correcta, por favor?
En Configurar servicios en el inicio:
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); });La implementación en la clase es:
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 })); } }se puede crear una interfaz con función/propiedad que devolverá el cliente de cola y luego implementará la interfaz para inyectar en DI, espero que el código a continuación ayude.
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 ; } }Ahora puede inyectar AzureQueueService en inyección de dependencia