← Volver al catálogo

Amazon MQ

En una frase: Broker gestionado de ActiveMQ o RabbitMQ para apps que usan JMS, AMQP o MQTT
Certificaciones: SAA-C03 SAP-C02
Documentación oficial: Documentación de Amazon MQ ↗

Qué es

Amazon MQ es un servicio de brokers de mensajes gestionados con dos motores de código abierto: Apache ActiveMQ y RabbitMQ. Un broker es el servidor intermediario que recibe, guarda y reparte los mensajes entre aplicaciones. AWS se encarga de aprovisionarlo, parchearlo y mantener su alta disponibilidad, y tus aplicaciones siguen hablando los mismos protocolos estándar que en tu centro de datos. Su razón de ser es la migración: llevar a AWS aplicaciones que ya usan un broker sin reescribir la mensajería.

Conceptos clave

  • Protocolos: ActiveMQ habla JMS (Java Message Service: API estándar de mensajería de Java), AMQP (Advanced Message Queuing Protocol: protocolo estándar de mensajería) 1.0, MQTT (Message Queuing Telemetry Transport: protocolo ligero de mensajería para dispositivos), STOMP (Simple Text Oriented Messaging Protocol: protocolo de mensajería basado en texto), OpenWire y WebSocket; RabbitMQ habla AMQP 0-9-1. Por eso encaja cuando la aplicación ya usa esas interfaces.
  • Modos de despliegue:
    • Instancia única: para desarrollo y pruebas.
    • ActiveMQ activo/en espera: dos brokers en dos zonas de disponibilidad con almacenamiento compartido (EFS (Elastic File System)); si cae el activo, el de espera toma el control.
    • RabbitMQ en clúster: tres nodos en tres zonas detrás de un único endpoint, con colas replicadas (colas quorum).
  • Tamaño del broker: se elige un tipo de instancia (mq.m5, mq.m7g…); no escala solo como SQS (Simple Queue Service), hay que dimensionarlo.
  • Colas y temas: los brokers ofrecen tanto colas (punto a punto) como temas (publicación/suscripción) con los modelos propios de cada motor (intercambios de RabbitMQ, destinos virtuales de ActiveMQ).
  • Acceso: brokers públicos (con endpoint accesible desde internet) o privados (solo dentro de una VPC (Virtual Private Cloud)).

Casos de uso típicos

  • Migrar a AWS aplicaciones Java empresariales que usan JMS.
  • Llevar un clúster de RabbitMQ autogestionado a un servicio gestionado.
  • Integrar sistemas heredados que solo hablan AMQP, MQTT o STOMP.

Cuándo NO usarlo

Amazon MQ frente a SQS/SNS

CaracterísticaAmazon MQSQS / SNS
ProtocolosEstándar (JMS, AMQP, MQTT, STOMP)API (Application Programming Interface: interfaz para que los programas se comuniquen) propia de AWS
EscaladoEliges el tamaño del brokerAutomático, casi ilimitado
OperaciónGestionado, pero con broker y ventanas de mantenimientoSin servidores
Mejor paraMigrar aplicaciones existentesAplicaciones nuevas en AWS

Modelo de precios

Se paga por hora de cada instancia de broker según su tipo y el modo de despliegue (varias instancias en alta disponibilidad multiplican el coste), más el almacenamiento por GB al mes y la transferencia de datos. No hay cobro por mensaje.

Seguridad y alta disponibilidad

  • Brokers privados dentro de la VPC, con security groups.
  • Cifrado en tránsito con TLS (Transport Layer Security: cifrado de las conexiones) y en reposo con claves de KMS (Key Management Service).
  • Usuarios del propio broker (y LDAP (Lightweight Directory Access Protocol: protocolo de directorios de usuarios) en ActiveMQ); IAM (Identity and Access Management) controla quién gestiona los brokers.
  • Alta disponibilidad con activo/en espera (ActiveMQ) o clúster de tres nodos (RabbitMQ).
  • Actualizaciones en ventanas de mantenimiento que elige el cliente.

Trampas de examen

  • "JMS", "AMQP", "STOMP", "OpenWire" o "migrar sin cambiar el código de mensajería": Amazon MQ.
  • "Aplicación nueva, escalado automático, sin servidores": SQS o SNS, no Amazon MQ.
  • "Alta disponibilidad de ActiveMQ": despliegue activo/en espera en dos zonas.
  • "RabbitMQ gestionado y resistente a fallos de zona": clúster de tres nodos.

Preguntas de práctica

Preguntas originales escritas para estos apuntes. No son preguntas reales de examen.

Fuentes