Contenido del curso
Arquitectura Basada en Microservicios
Automatización y Preparación del Entorno
Comunicación Asíncrona entre Servicios
Despliegue
Observabilidad
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
DefaultConnectionhacia 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:
- Recibe el mensaje del topic y lo registra como mensaje recibido.
- Fragmenta el contenido usando comillas y comas para reconstruir un objeto.
- Arma un objeto Adult con nombre, apellido, año de nacimiento y URL de imagen.
- Envía la información al
DbContexty persiste conSaveChanges[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.