El consumo ordenado garantiza que los mensajes se entreguen a los consumidores en el mismo orden en que se publicaron. ApsaraMQ for RabbitMQ logra esto mediante el modo Single Active Consumer y una ordenación por mezcla entre particiones de almacenamiento distribuido, lo que proporciona las mismas semánticas de ordenamiento que RabbitMQ de código abierto.
Funcionamiento
El consumo ordenado requiere dos condiciones: almacenamiento ordenado y un único consumidor.
RabbitMQ de código abierto
Único consumidor: RabbitMQ de código abierto admite dos modos: Single Active Consumer y Exclusive Consumer. La comunidad de código abierto recomienda Single Active Consumer.
Almacenamiento ordenado: Los mensajes de una misma cola se leen y escriben en un solo nodo, lo que preserva inherentemente el orden de los mensajes.
ApsaraMQ for RabbitMQ
Único consumidor: ApsaraMQ for RabbitMQ utiliza el modo Single Active Consumer recomendado por la comunidad de código abierto.
Almacenamiento ordenado: ApsaraMQ for RabbitMQ emplea una arquitectura distribuida con almacenamiento y cómputo desacoplados. Los mensajes de una sola cola se distribuyen en varias particiones a través de varios nodos. Los nodos de cómputo leen los mensajes de estas particiones de almacenamiento, ejecutan una ordenación por mezcla y los entregan al consumidor en el orden correcto. Esto permite obtener las mismas semánticas de consumo ordenado que RabbitMQ de código abierto.
Ordenación por mezcla en la arquitectura distribuida
En el modo Single Active Consumer, una cola mantiene solo una conexión activa; las demás permanecen inactivas. El nodo de cómputo que posee la conexión activa extrae los mensajes de todos los nodos de almacenamiento, los ordena y los entrega al consumidor.
Dado que el nodo de cómputo ordena los mensajes antes de entregarlos, almacena temporalmente algunos mensajes en caché. Si la conexión activa realiza un failover hacia otro nodo de cómputo, estos mensajes en caché se vuelven a agregar a la cola de consumo para su reentrega.
Beneficios
En comparación con RabbitMQ de código abierto, la arquitectura distribuida de ApsaraMQ for RabbitMQ ofrece:
Alta concurrencia y escalabilidad: Varias particiones permiten escrituras de alta concurrencia y escalado horizontal.
Alta disponibilidad: Varios consumidores pueden conectarse a varios nodos de cómputo. Si un consumidor o un nodo de cómputo falla, el sistema realiza rápidamente un failover a un nodo sano para mantener la continuidad del servicio.
Habilite el consumo ordenado
Para habilitar el consumo ordenado, establezca el argumento x-single-active-consumer en true cuando cree la cola.
El servidor ordena los mensajes antes de entregarlos, lo que puede reducir la tasa de consumo. Evalúe si su caso de uso requiere consumo ordenado antes de habilitar esta función.
Limitaciones
El consumo ordenado está disponible únicamente en a continuación ediciones de instancia:
Enterprise Edition
Platinum Edition
Serverless Edition