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»:

Screen-Shot233

Lo configuramos en función de nuestros requerimientos:

Screen-Shot231

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»:

Screen-Shot232

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:

Screen-Shot234

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:

Screen-Shot235

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:

Screen-Shot240

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:

Screen-Shot239

Creamos el método para recibir mensajes. Utiliza métodos delegados para procesar cada lectura:

Screen-Shot238

A continuación vemos los métodos delegados utilizados en el recibidor de mensajes:

Screen-Shot236
Screen-Shot237

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.

Screen-Shot241

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:

Screen-Shot242
Screen-Shot243

Finalmente, resolvemos las depencencias en el Startup:

Screen-Shot244

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:

Screen-Shot245

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

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.