En AZ-204, los servicios de mensajeria son el nucleo de la integracion de sistemas distribuidos. Esto cubre como implementar comunicacion asincrona y confiable entre sistemas.
Por que necesitamos servicios de mensajeria?
Imagina una tienda en linea donde, tras recibir un pedido, necesitas gestionar el pago, reducir el inventario, programar el envio y enviar un correo de confirmacion al mismo tiempo. Si todas estas tareas estan directamente conectadas, un paso lento bloquea todo el proceso.
Una cola de mensajes resuelve este problema como un buzon de correo. El sistema de pedidos deposita un mensaje de "pedido completado" en la cola y pasa inmediatamente a la siguiente tarea. Los sistemas de pago, inventario y envio recogen mensajes de la cola de forma independiente, cada uno a su propio ritmo.
Azure Service Bus
Service Bus es como el sistema de correo interno de una gran empresa. Va mucho mas alla de simplemente entregar cartas: es un broker de mensajes de nivel empresarial que incluye confirmacion de entrega, manejo de prioridades, entrega clasificada y reintento ante fallos.
Cola (Queue) — mensajeria 1:1
Un emisor envia un mensaje a un receptor. Los mensajes se procesan en orden FIFO (primero en entrar, primero en salir).
| Propiedad | Detalles | |----------|---------| | Tamano del mensaje | Hasta 256 KB (nivel Standard) a 100 MB (nivel Premium) | | Deteccion de duplicados | Si el mismo mensaje se envia dos veces, se procesa automaticamente solo una vez | | TTL (Time-To-Live) | Tiempo de expiracion del mensaje configurable | | Procesamiento con bloqueo | Un mensaje en proceso por un receptor no puede ser tomado por otro |
Topicos y suscripciones — mensajeria 1:N
Un emisor envia un mensaje a multiples receptores. Los filtros de suscripcion permiten que cada receptor reciba solo los mensajes que coincidan con sus criterios.
Filtro SQL: Filtrar usando condiciones tipo SQL como Filtro de correlacion: Filtrar por un valor de propiedad especifico (mejor rendimiento que el filtro SQL)
Por ejemplo, si un topico de evento de pedido tiene tres suscripciones: Suscripcion A (equipo de pagos): Recibe todos los pedidos Suscripcion B (equipo VIP): Recibe solo pedidos donde Suscripcion C (equipo de pedidos grandes): Recibe solo pedidos donde
Funciones avanzadas
| Funcion | Descripcion | Cuando usar | |---------|-------------|------------| | Cola de mensajes fallidos (DLQ) | Cola separada donde se acumulan los mensajes fallidos | Analizar y reprocesar mensajes fallidos | | Sesion de mensajes | Procesa en orden los mensajes con el mismo ID de sesion | Cuando el orden importa, como los pasos de un pedido individual | | Mensajes programados | Programa un mensaje para procesarse en una hora especifica | Envio programado, procesamiento diferido | | Reenvio automatico | Reenvio automatico de una cola/suscripcion a otra | Enrutamiento de mensajes | | Transaccion | Procesa multiples operaciones de mensajes de forma atomica | Envio y recepcion como una sola unidad |
Uso del SDK de Service Bus
PeekLock vs ReceiveAndDelete
| Modo | Comportamiento | Cuando usar | |------|--------------|------------| | PeekLock (predeterminado) | Obtiene el mensaje en estado bloqueado; debe completarse explicitamente tras el procesamiento | Cuando no se puede permitir la perdida de mensajes (seguro, recomendado) | | ReceiveAndDelete | Elimina de la cola inmediatamente al recibir | Cuando la perdida ocasional durante el procesamiento es aceptable (mas rapido pero arriesgado) |
Azure Queue Storage
Queue Storage es como un buzon de correo del vecindario. Ofrece solo la funcion basica de almacenar mensajes, sin servicios adicionales, pero es economico y facil de usar.
| Propiedad | Detalles | |----------|---------| | Tamano del mensaje | Hasta 64 KB | | Numero de mensajes | Ilimitado (hasta la capacidad de la cuenta de almacenamiento) | | Tiempo de espera de visibilidad | Tiempo durante el cual un mensaje queda oculto para otros receptores mientras uno lo procesa | | Retencion | Hasta 7 dias | | Metodo de acceso | API REST HTTP/HTTPS |
Queue Storage es parte de una cuenta de Azure Storage, por lo que puedes usarlo en la misma cuenta que Blob Storage.
Comparacion: Service Bus vs Queue Storage
| Aspecto | Service Bus | Queue Storage | |--------|------------|--------------| | Tamano del mensaje | Hasta 100 MB (Premium) | Hasta 64 KB | | Orden de mensajes | Sesiones FIFO admitidas | No garantizado | | Deteccion de duplicados | Compatible | No compatible | | Topicos/Suscripciones (1:N) | Compatible | No compatible | | Cola de mensajes fallidos | Compatible | No compatible | | Transacciones | Compatible | No compatible | | Costo | Relativamente mas alto | Economico | | Mejor para | Empresarial, flujos de trabajo complejos | Cola simple, gran volumen, bajo costo |
!Service Bus vs Queue Storage
Puntos clave del examen
"Mensajeria confiable empresarial, flujos de trabajo complejos" -- Azure Service Bus
"Entrega de mensajes 1:1, FIFO" -- Cola de Service Bus (Queue)
"Entrega de mensajes 1:N, filtros por suscripcion" -- Topico de Service Bus + Suscripcion
"Filtrar mensajes con condiciones tipo SQL" -- Filtro SQL
"Filtrar por valor de propiedad, mejor rendimiento que filtro SQL" -- Filtro de correlacion
"Donde se almacenan los mensajes fallidos para analisis" -- Cola de mensajes fallidos (DLQ)
"Procesar en orden mensajes con el mismo ID de sesion" -- Sesion de mensajes
"Mantener bloqueo hasta confirmar el procesamiento (seguro)" -- PeekLock
"Eliminar inmediatamente al recibir (rapido pero con riesgo de perdida)" -- ReceiveAndDelete
"Cola simple, bajo costo, mensajes de menos de 64 KB" -- Azure Queue Storage
"Tiempo de espera de visibilidad: oculta un mensaje durante el procesamiento para que otros receptores no puedan tomarlo" -- Tiempo de espera de visibilidad de Queue Storage