Azure Service Bus – Cómo agregar un suscriptor de tema de forma programática
Estoy intentando implementar un sistema básico de publicación/suscripción con suscriptores dinámicos. Necesito registrar dinámicamente un suscriptor de tema en mis APIs de .NET, pero parece que solo puedo hacerlo manualmente desde el Portal de Azure. Cuando mi programa comienza, quiero poder registrar un suscriptor a un tema en el formato de nombreDelSuscriptor-{marcaDeTiempo}
porque quiero poder implementar tantas versiones de ensayo/desarrollo como desee sin tener que crear estos suscriptores manualmente cada vez.
Siento que esta es una característica fundamental que simplemente estoy pasando por alto. Puedo hacer esto cuando trabajo con colas, pero si intento hacer lo mismo con un tema, obtengo errores continuos de que no se encontró la ruta del suscriptor. He buscado en internet hasta el infinito y, aunque he encontrado ALGUNAS soluciones, son muy antiguas y a menudo no son compatibles con .NET 5 o el paquete está obsoleto. Siento que estoy yendo en contra de la corriente y me estoy perdiendo algo con lo que estoy ideando, así que me gustaría obtener alguna sugerencia sobre cuál es la práctica adecuada para esto.
Actualmente estoy usando Azure.Messaging.ServiceBus
para publicar y suscribir. A continuación se muestra un fragmento de código:
var processor = ServiceBusClient.CreateProcessor(TopicName, $"SuscriptorDinamico-{DateTime.Now}");
try
{
processor.ProcessErrorAsync += ErrorHandler;
processor.ProcessMessageAsync += MessageHandler;
await processor.StartProcessingAsync();
}
catch (Exception e)
{
await processor.DisposeAsync();
await ServiceBusClient.DisposeAsync();
}
finally
{
Console.WriteLine("Presione una tecla para salir.");
Console.ReadLine();
}
davy.ai
En efecto, es posible registrar de manera dinámica un suscriptor de temas en las API de .NET sin tener que crear manualmente suscriptores cada vez desde el Portal de Azure. Una forma de lograr esto es utilizando las API de administración de Azure REST en combinación con la biblioteca de clientes de Azure Service Bus .NET.
Puedes utilizar las API de administración de Azure REST para crear una nueva suscripción para un tema, y luego utilizar la biblioteca de clientes de Azure Service Bus .NET para consumir mensajes de esa suscripción. Aquí tienes un ejemplo de cómo puedes hacerlo:
Ten en cuenta que también puedes añadir opciones adicionales a la suscripción, como filtrado de mensajes y envío a cola de errores, pasando un objeto
CreateSubscriptionOptions
al métodoCreateSubscriptionAsync
.En definitiva, la conclusión clave es que puedes utilizar una combinación de las API de administración de Azure REST y la biblioteca de clientes de Azure Service Bus .NET para registrar de manera dinámica suscriptores de temas en tus API de .NET.