Curso de Introducción a los Microservicios

Conectar Add Adult a Service Bus y SQL

Curso de Introducción a los Microservicios

Contenido del curso

Conectar Add Adult a Service Bus y SQL

Resumen

Conectar un microservicio .NET a un topic de Azure Service Bus y persistir los datos en SQL Server es el paso que cierra el flujo entre queues y topics. Aquí verás cómo configurar el servicio Add Adult para que escuche un topic, transforme el mensaje recibido y lo guarde en base de datos usando Entity Framework.

Qué configurar en appsettings.json para conectar Service Bus y SQL

El primer paso dentro del microservicio Add Adult es preparar la configuración. A diferencia de ejercicios anteriores, ahora necesitas dos valores en lugar de uno.

En el archivo appsettings.json debes colocar:

  • La cadena de conexión a Service Bus, apuntando ya no a un queue sino a un topic llamado Adults Topic.
  • La DefaultConnection hacia tu servidor de SQL Server, que puede ser local o remoto.

¿Importa si el servidor SQL es local o remoto? No. Mientras tu aplicación tenga conectividad hacia ese servidor, el worker funciona sin problema.

Antes de tocar código, también necesitas instalar los paquetes de NuGet correspondientes. Esto se resuelve copiando y pegando los comandos del documento Markdown directamente en la terminal [01:00].

Cómo transformar Program.cs en una aplicación worker en .NET

Igual que ocurrió con el servicio Pick Age, el archivo Program.cs deja de exponer un endpoint y pasa a ser una aplicación de tipo worker [01:35]. Este cambio es el que permite que el servicio quede escuchando mensajes de forma continua en lugar de responder a peticiones HTTP.

Por qué crear la clase Worker.cs

Una aplicación worker necesita su propia clase. Dentro del proyecto creas Worker.cs y pegas el código indicado en la documentación. Aquí aparece la diferencia clave respecto al servicio anterior: un método adicional llamado Guardar a la base de datos.

El flujo dentro del worker es el siguiente:

  1. Recibe el mensaje del topic y lo registra como mensaje recibido.
  2. Fragmenta el contenido usando comillas y comas para reconstruir un objeto.
  3. Arma un objeto Adult con nombre, apellido, año de nacimiento y URL de imagen.
  4. Envía la información al DbContext y persiste con SaveChanges [02:30].

¿Qué hace SaveChanges en este worker? Es el mismo método de Entity Framework que usabas en la API monolítica original. Toma el objeto en memoria y lo escribe en la tabla de adultos de SQL.

Es importante notar que no estás inventando lógica nueva: estás fusionando la funcionalidad de la API original con la mensajería de Service Bus.

Cómo organizar Data y Models para el worker de Add Adult

La estructura de carpetas replica la de la API original, lo que mantiene el proyecto consistente y fácil de mantener.

Qué va dentro de la carpeta Data

Crea una carpeta llamada Data y dentro de ella un archivo DataContext.cs. Copia y pega el fragmento del documento. Este archivo contiene únicamente dos cosas:

  • La conexión a la base de datos vía la cadena configurada en appsettings.json.
  • La declaración del modelo que la aplicación va a manejar.

Qué va dentro de la carpeta Models

Crea otra carpeta llamada Models y dentro un archivo Adult.cs con A mayúscula. Pega el código del modelo, conservando el namespace completo. Este modelo describe las propiedades del adulto: nombre, apellido, año de nacimiento e imagen.

¿Por qué repetir la estructura Data/Models si ya existía en la API? Porque cada microservicio es independiente. Add Adult debe poder compilar, conectarse a SQL y persistir sin depender del proyecto original.

Con esto, el servicio Add Adult queda listo para escuchar el topic, deserializar el mensaje y guardar el registro. El siguiente paso es probar el flujo completo: enviar un mensaje a Add Member, dejar que pase por Pick Age y verificar que termine guardado por el servicio de adulto [04:30].

¿Ya tienes tu worker compilando? Cuéntame en los comentarios cómo te fue con la conexión al topic.