Simple Message Queue (SMQ, anteriormente MNS) es un servicio de mensajería distribuida que transfiere datos y notificaciones entre los componentes de una aplicación. Este servicio desacopla a los productores de los consumidores para que cada componente pueda escalarse, desplegarse y fallar de manera independiente.
SMQ ofrece dos modelos de mensajería:
Modelo de cola: mensajería punto a punto en la que cada mensaje lo procesa un único consumidor.
Modelo de tema: mensajería de publicación-suscripción en la que un solo mensaje se entrega a varios suscriptores.
Ventajas
|
Ventaja |
Descripción |
|
Escalabilidad |
Gestiona solicitudes simultáneas de varios productores y consumidores. Ajuste la configuración de concurrencia según su carga de trabajo. |
|
Fiabilidad |
Entrega cada mensaje de cola como mínimo una vez durante su periodo de validez. Reintenta automáticamente los mensajes de tema según las directivas de reintento configurables. |
|
Seguridad |
Utiliza el sistema de cuentas de Alibaba Cloud para aislar los recursos, de modo que solo las entidades autorizadas puedan acceder a los mensajes. |
|
Alta disponibilidad |
Mantiene la disponibilidad de la infraestructura de mensajería de forma continua. |
Casos de uso
Desacoplamiento de microservices. Dirija la comunicación entre servicios a través de colas en lugar de llamadas directas. Cada servicio consume mensajes a su propio ritmo, por lo que una ralentización en un componente no bloquea a los demás.
Distribución de notificaciones. Publique un único evento en un tema para llegar a varios sistemas posteriores al mismo tiempo. Por ejemplo, un evento de pedido realizado se distribuye simultáneamente a una cola de cumplimiento, una cola de almacén de datos y un endpoint de notificación HTTP.
Nivelación de carga. Almacene temporalmente las solicitudes entrantes en una cola durante los picos de tráfico. Los consumidores procesan la acumulación a un ritmo constante, lo que protege a los servicios de backend contra sobrecargas.
Procesamiento asíncrono. Descargue tareas que consumen mucho tiempo (procesamiento de imágenes, generación de informes, transformación de datos) a trabajadores en segundo plano mediante una cola.
Métodos de acceso
SMQ admite el acceso a través de Internet y mediante una Virtual Private Cloud (VPC). Dentro de una VPC, configure el bloque CIDR, la tabla de rutas y la puerta de enlace para acceder a SMQ junto con otros servicios de Alibaba Cloud, como Elastic Compute Service (ECS), ApsaraDB RDS y Server Load Balancer (SLB).
Modelo de cola
En el modelo de cola, los productores envían mensajes a una cola y los consumidores extraen mensajes de ella. Cada mensaje puede consumirlo un solo consumidor, lo que hace que este modelo sea adecuado para la distribución de tareas y el procesamiento de cargas de trabajo.
Funcionamiento
Un productor envía un mensaje a una cola.
Un consumidor extrae el mensaje. Una vez recuperado, el mensaje entra en un periodo de invisibilidad y permanece oculto para otros consumidores durante una duración configurable.
Después del procesamiento, el consumidor elimina el mensaje de la cola.
Si el consumidor no elimina el mensaje antes de que expire el periodo de invisibilidad, el mensaje vuelve a estar disponible para que otro consumidor lo recupere.
Flujo de mensajes basado en colas 
Tipos de cola
|
Tipo |
Descripción |
|
Cola estándar |
Tipo de cola predeterminado para mensajería de propósito general. |
|
Cola diferida |
Los mensajes están disponibles para su consumo solo después de un retraso especificado. |
Personalice los parámetros de la cola, como el tiempo de espera de visibilidad, el periodo de retención de mensajes y la longitud máxima del mensaje, para adaptarlos a su carga de trabajo.
Garantía de entrega
Cada mensaje en una cola se entrega como mínimo una vez durante su periodo de validez. SMQ se integra con el sistema de cuentas de Alibaba Cloud para aislar los recursos entre usuarios, de modo que solo las entidades autorizadas puedan acceder a los mensajes.
Modelo de tema
En el modelo de tema, un publicador envía un mensaje a un tema y SMQ envía el mensaje a todas las suscripciones activas. Cada suscripción dirige los mensajes a un endpoint especificado, como una cola. Este modelo de uno a muchos es adecuado para la difusión de eventos y los patrones de distribución.
Funcionamiento
Un publicador envía un mensaje a un tema.
SMQ evalúa cada suscripción asociada al tema.
Si una suscripción tiene una etiqueta de filtro, solo se entregan los mensajes que llevan la misma etiqueta. Las suscripciones sin etiqueta de filtro reciben todos los mensajes.
SMQ envía el mensaje al endpoint especificado en cada suscripción coincidente.
Flujo de mensajes basado en temas 
Filtrado de mensajes
Las suscripciones admiten el filtrado basado en etiquetas. Asigne una etiqueta a una suscripción para recibir solo los mensajes que lleven esa misma etiqueta. Esto reduce el procesamiento innecesario y permite que varios suscriptores compartan un único tema mientras gestionan diferentes tipos de mensajes.
Sin etiqueta en la suscripción: Se entregan todos los mensajes publicados en el tema, independientemente de si llevan etiquetas.
Con etiqueta en la suscripción: Solo se entregan los mensajes con una etiqueta coincidente.
Para obtener más información, consulte RESTful API operations about topics.
Entrega de mensajes
SMQ envía mensajes a los endpoints especificados en las suscripciones. Si una URL de devolución de llamada no está disponible, dirija los mensajes a una cola de SMQ y recupérelos mediante el modelo de cola. Para consultar las instrucciones de configuración, véase Push messages to a queue y Send messages from one producer client to multiple consumer clients.
SMQ envía automáticamente los mensajes durante el periodo de validez según la directiva de reintento configurada (NotifyStrategy). Esto garantiza la atomicidad de la publicación de mensajes.
Formatos de mensaje
|
Formato |
Contenido |
|
XML |
Cuerpo y atributos del mensaje en XML. |
|
JSON |
Cuerpo y atributos del mensaje en JSON. |
|
SIMPLIFIED |
Solo el cuerpo del mensaje, sin atributos (texto sin formato). |
Para obtener más información, consulte NotifyContentFormat.
Monitoreo y registros
Gestión de registros
Rastree el ciclo de vida completo de cada mensaje, incluidos los eventos de envío, recepción y eliminación. En el caso de los mensajes de tema, los registros también capturan los intentos de envío y los resultados de entrega.
Utilice la gestión de registros para solucionar problemas de entrega, auditar el procesamiento de mensajes y verificar el flujo de mensajes de extremo a extremo. Para obtener más información, consulte Log management.
Integración con Cloud Monitor
Monitoree las métricas de la cola y configure reglas de alerta personalizadas en la consola de Cloud Monitor. Cloud Monitor le notifica cuando ocurren anomalías, como fallos en la entrega de mensajes. Para obtener más información, consulte Cloud Monitor.