0Pricing
Azure Fundamentals · Lección

Azure Service Bus para mensajería desacoplada

Cree un espacio de nombres de Service Bus con colas y temas, envíe y reciba mensajes desde una aplicación y configure colas de mensajes fallidos para gestionar los mensajes que no se puedan procesar.

Azure Service Bus para mensajería desacoplada es una lección gratuita de Azure Fundamentals en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Azure Fundamentals, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Azure Fundamentals incluye 4 lecciones en total.

¿Por qué desacoplar mediante mensajería?

En las arquitecturas estrechamente acopladas, los servicios se llaman entre sí de forma síncrona: si el servicio posterior es lento o no está disponible, el servicio que realiza la llamada también se bloquea o falla. Las colas de mensajería introducen un búfer asíncrono entre productores y consumidores, de modo que un servicio posterior lento no provoque un efecto dominó de errores en los servicios anteriores. Azure Service Bus es el servicio de mensajería empresarial de Microsoft, que proporciona colas (punto a punto) y temas (publicación-suscripción), con capacidades de entrega garantizada, ordenación y mensajes en la cola de mensajes fallidos.

Espacios de nombres y niveles de Service Bus

Un espacio de nombres de Service Bus es el contenedor de nivel superior para todas las entidades de mensajería (colas y temas) y proporciona el punto de conexión FQDN (por ejemplo, myns.servicebus.windows.net). Los espacios de nombres tienen tres niveles: Basic (solo colas, sin temas y con un tamaño máximo de mensaje de 256 KB), Standard (colas y temas, con un máximo de 256 KB) y Premium (colas y temas, mensajes de hasta 100 MB, capacidad dedicada, integración con VNet y recuperación ante desastres geográficos). Premium es necesario para cargas de trabajo de producción que requieren un rendimiento respaldado por un SLA.

# Create a Service Bus namespace (Standard tier)
az servicebus namespace create \
  --resource-group myRG \
  --name myservicebusns \
  --location eastus \
  --sku Standard

Colas: mensajería punto a punto

Una cola de Service Bus almacena los mensajes en orden FIFO y entrega cada mensaje exactamente a un consumidor. Los consumidores reciben los mensajes mediante un mecanismo de peek-lock: el mensaje se oculta temporalmente a los demás consumidores mientras se procesa. Si el consumidor finaliza correctamente el procesamiento, llama a CompleteMessage() para eliminar el mensaje de la cola. Si el procesamiento falla, el consumidor llama a AbandonMessage() y el mensaje vuelve a estar visible para otro intento. Después de un número configurable de intentos de entrega, los mensajes que no se pueden procesar se trasladan a la cola de mensajes fallidos (DLQ).

# Create a Service Bus queue with DLQ enabled
az servicebus queue create \
  --resource-group myRG \
  --namespace-name myservicebusns \
  --name orders \
  --max-delivery-count 5 \
  --default-message-time-to-live P7D \
  --dead-lettering-on-message-expiration true

Temas y suscripciones

Los temas implementan el patrón de publicación-suscripción: un productor envía un mensaje a un tema y cualquier número de suscripciones de ese tema recibe una copia del mensaje. Las suscripciones pueden tener filtros (expresiones SQL o de correlación) para recibir solo un subconjunto de mensajes; por ejemplo, una suscripción HighPriority que solo recibe mensajes cuya propiedad Priority sea igual a High. Esto permite que un solo tema distribuya mensajes a muchos servicios posteriores, cada uno interesado en un subconjunto diferente de eventos.

# Create a topic and two subscriptions with filters
az servicebus topic create \
  --resource-group myRG \
  --namespace-name myservicebusns \
  --name order-events

az servicebus topic subscription create \
  --resource-group myRG \
  --namespace-name myservicebusns \
  --topic-name order-events \
  --name high-priority-sub

az servicebus topic subscription rule create \
  --resource-group myRG \
  --namespace-name myservicebusns \
  --topic-name order-events \
  --subscription-name high-priority-sub \
  --name PriorityFilter \
  --filter-sql-expression 'Priority = '"'"'High'"'"''

Envío y recepción de mensajes

El SDK de Azure Service Bus proporciona un ServiceBusClient para enviar y recibir mensajes. Para enviar, cree un ServiceBusSender y llame a SendMessageAsync(). Para recibir, cree un ServiceBusReceiver y llame a ReceiveMessageAsync() (basado en extracción), o use un ServiceBusProcessor con un controlador de eventos para realizar un procesamiento continuo basado en inserción. El uso de DefaultAzureCredential con el SDK de Service Bus elimina la necesidad de cadenas de conexión y mantiene el patrón sin contraseñas.

# Python: Send a message to a Service Bus queue
from azure.servicebus import ServiceBusClient, ServiceBusMessage
from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
client = ServiceBusClient(
  fully_qualified_namespace='myservicebusns.servicebus.windows.net',
  credential=credential
)
with client.get_queue_sender(queue_name='orders') as sender:
    msg = ServiceBusMessage('{ 'orderId': '12345', 'amount': 99.99 }')
    sender.send_messages(msg)
    print('Message sent')

Cola de mensajes fallidos

La cola de mensajes fallidos (DLQ) es una subcola que recibe automáticamente los mensajes que no se pueden entregar. Los mensajes se envían a la cola de mensajes fallidos cuando superan el número máximo de entregas, caducan (transcurre el TTL) o no superan la evaluación de un filtro de suscripción de un tema. Es fundamental supervisar la DLQ: una DLQ que crece indica un fallo sistemático de procesamiento. Los mensajes de la DLQ conservan su contenido original y las propiedades motivo del mensaje fallido y descripción, que Service Bus agrega para ayudar a diagnosticar la causa raíz.

# Read messages from the dead-letter queue
az servicebus queue show \
  --resource-group myRG \
  --namespace-name myservicebusns \
  --name 'orders/$DeadLetterQueue' \
  --query 'countDetails.deadLetterMessageCount'

Sesiones para ordenar mensajes

Las sesiones permiten ordenar estrictamente los mensajes que pertenecen al mismo grupo lógico. Cada mensaje se etiqueta con un SessionId (por ejemplo, un identificador de cliente o de pedido), y un consumidor compatible con sesiones recibe exclusivamente todos los mensajes de una sesión determinada en orden FIFO. Las sesiones son esenciales para los flujos de trabajo cuyos pasos deben ejecutarse en secuencia, como el procesamiento de todos los eventos de un pedido específico: Created → PaymentReceived → Shipped → Delivered. Las sesiones se habilitan al crear la cola o la suscripción.

Service Bus frente a Event Grid y Event Hubs

Estos tres servicios de mensajería de Azure suelen confundirse: Service Bus está destinado a la mensajería empresarial fiable y transaccional, con ordenación, sesiones y DLQ; es adecuado para el procesamiento de pedidos, las transacciones financieras y la orquestación de flujos de trabajo. Event Grid está destinado al enrutamiento reactivo de eventos (se cargó un blob o se eliminó una máquina virtual), con distribución a varios controladores, pero sin ordenación ni reproducción. Event Hubs está destinado a la transmisión de eventos de alto rendimiento (millones de eventos por segundo), con capacidad de reproducción; es adecuado para la telemetría de IoT y la ingesta de registros. Elija el servicio según los requisitos de ordenación, rendimiento y durabilidad.

Recuperación ante desastres geográficos

La recuperación ante desastres geográficos (Geo-DR) de Service Bus replica los metadatos del espacio de nombres (colas, temas, suscripciones y directivas de acceso) en una región secundaria. Las regiones emparejadas comparten un único nombre de host de alias; si la región primaria falla, se inicia una conmutación por error y el alias se resuelve en la región secundaria. Tenga en cuenta que los datos de los mensajes (mensajes en tránsito) no se replican en el nivel Standard; solo la Geo-DR del nivel Premium replica los mensajes. Para la mensajería de misión crítica, use Premium + Geo-DR para cumplir los requisitos de RTO y RPO.

Escalado y entidades particionadas

En escenarios de alto rendimiento, habilite la partición en las colas y los temas al crearlos. Las entidades particionadas usan internamente varios agentes de mensajes y fragmentos de almacenamiento, lo que multiplica la capacidad de rendimiento. En el nivel Standard, las entidades particionadas tienen un tamaño total de hasta 80 GB. Cada mensaje se enruta a una partición según su propiedad PartitionKey (de forma predeterminada, el identificador de sesión si las sesiones están habilitadas). La partición es una decisión única que se toma durante la creación: no se puede particionar una cola existente. Use el nivel Premium para obtener el máximo rendimiento garantizado sin la complejidad de las particiones.

# Create a partitioned queue (Standard tier)
az servicebus queue create \
  --resource-group myRG \
  --namespace-name myservicebusns \
  --name orders-partitioned \
  --enable-partitioning true

Supervisión del estado de Service Bus

Métricas clave de Service Bus que debe supervisar en Azure Monitor: Active Messages (profundidad de la cola; una profundidad creciente indica retraso del consumidor), Dead-lettered Messages (fallos de procesamiento), Server Errors y User Errors (problemas de autenticación y limitación), y Incoming Requests (rendimiento general). Configure alertas de métricas para notificar a los equipos de operaciones cuando la cola de mensajes fallidos supere un umbral o cuando los mensajes activos no se consuman durante un periodo prolongado.

Comprobación rápida

Compruebe su comprensión de los conceptos de Microsoft Azure Fundamentals (AZ-900) tratados en esta lección.

Resumen de la lección

En esta lección ha aprendido que las colas de Service Bus proporcionan mensajería punto a punto con entrega mediante peek-lock y una cola de mensajes fallidos para los mensajes que no se procesan correctamente; que los temas y las suscripciones distribuyen mensajes entre varios consumidores mediante reglas de filtrado; y que las sesiones permiten procesar en orden los mensajes que pertenecen al mismo grupo lógico. A continuación, exploraremos Azure Container Apps para implementar microservicios modernos.

Preguntas frecuentes

¿La lección «Azure Service Bus para mensajería desacoplada» es gratis?

Sí — el texto completo de «Azure Service Bus para mensajería desacoplada» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Azure Fundamentals, actualiza a CoddyKit PRO. El curso de Azure Fundamentals incluye 4 lecciones en total.

¿Qué aprenderé en «Azure Service Bus para mensajería desacoplada»?

Cree un espacio de nombres de Service Bus con colas y temas, envíe y reciba mensajes desde una aplicación y configure colas de mensajes fallidos para gestionar los mensajes que no se puedan procesar. Practicas Azure Fundamentals con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Azure Fundamentals?

No se requiere experiencia previa. Azure Fundamentals en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Azure Service Bus para mensajería desacoplada»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Azure Fundamentals?

Sí. Cada lección de Azure Fundamentals incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Identidad administrada para autenticación sin contraseñas
  2. Azure Service Bus para mensajería desacoplada
  3. Azure Container Apps
  4. Flujo de trabajo del desarrollador de principio a fin
← Volver a Azure Fundamentals