Implementar servicio de mensajería en la nube: Azure Service Bus
Azure Service Bus es un agente de mensajes empresarial totalmente administrado que incluye colas de mensajes y temas que se pueden publicar y a los que es posible suscribirse. Estos mensajes almacenados en una cola se pueden transmitir entre diferentes aplicaciones y servicios.
Vamos a aprender a implementarlo:
Pasos a seguir en el portal de Azure
En primer lugar, debemos crear un nuevo servicio en nuestro portal de Azure. Escogeremos «Service Bus»:
Lo configuramos en función de nuestros requerimientos:
Ya habremos creado el Service Bus.
El siguiente paso es obtener la Connection String que utilizaremos después en la aplicación web para acceder al Service Bus. La encontramos en «Shared Access Policies»:
Utilizaremos la «Primary Connection String».
El servicio funciona mediante la creación de Queues, es decir, colas. Crearemos una y la configuramos según nuestras necesidades:
Ya habríamos finalizado la configuración del portal de Azure.
Pasos a seguir en la aplicación MVC Core
En primer lugar, agregaremos el siguiente Nuget para utilizar Service Bus:
Agregamos al appsettings.json la Connection String que guardamos anteriormente:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"ServiceBusKey": "Endpoint=sb://servicebustechclub.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=Ksplk750+T00/Yyssx+vb+kzi4GW0o1Q3rFPMHhGPyQ="
}
}
A continuación crearemos la carpeta Services con su clase ServiceQueueBus. Esta clase será donde se implementen los métodos de envío y recibo de mensajes.
Los procesos de recepción de mensajes se realizan de forma asíncrona. Se utiliza un método delegado que irá leyendo cada mensaje.
Declaramos una lista de Strings que contendrá la cola de mensajes e instanciamos el cliente:
Creamos el método para enviar mensajes. Le pasaremos los mensajes por parámetros y en él debemos indicar el nombre de la cola creada anteriormente:
Creamos el método para recibir mensajes. Utiliza métodos delegados para procesar cada lectura:
A continuación vemos los métodos delegados utilizados en el recibidor de mensajes:
Creamos la vista y el controlador de lo que será la parte visual. En la vista crearemos un simple cuadro de texto con 2 botones para enviar y recibir mensajes de la cola.
El controlador recibirá el texto al presionar el botón de Enviar, y enviará la lista de mensajes al pulsar el botón de Recibir. Debemos inyectar el servicio en el Controller:
Finalmente, resolvemos las depencencias en el Startup:
El resultado final será este. Podemos enviar mensajes y recibirlos posteriormente, al igual que lo podría hacer otra aplicación o servicio que disponga de la cadena de conexión de la cola creada:
Con esto estaría todo. Espero haya sido de gran ayuda. ¡Un saludo!
Autor/a: Diego García Gordo
Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma
Centro: Tajamar
Año académico: 2021-2022
Proyecto GitHub: https://github.com/MsDiegoG/EjemploPostAzure