Un servicio de colas de mensajes es un middleware orientado a mensajes (MOM) implementado en una nube de computación mediante un modelo de software como servicio . Los suscriptores del servicio acceden a colas o temas para intercambiar datos mediante patrones punto a punto o de publicación y suscripción .
Es importante diferenciar entre servicios basados en eventos y servicios basados en mensajes (también conocidos como servicios basados en colas): Los servicios basados en eventos (por ejemplo, AWS SNS ) están desacoplados de sus consumidores. Mientras que los servicios basados en colas/mensajes (por ejemplo, AWS SQS ) están acoplados a sus consumidores. [ 1 ]
Las colas de mensajes pueden ser un buen búfer para manejar cargas de trabajo con picos, pero tienen una capacidad finita. Según Gregor Hohpe, las colas de mensajes requieren mecanismos adecuados (también conocidos como controles de flujo) para evitar que la cola se llene más allá de su capacidad manejable y para mantener la estabilidad del sistema. [ 2 ]
Garantías de ordenación en colas de mensajes
Las sesiones de Amazon SQS FIFO y Azure Service Bus son sistemas de mensajería basados en colas que garantizan el orden dentro de un grupo de mensajes o intento de sesión, pero no necesariamente la entrega en orden en caso de reintentos o fallos. En SQS FIFO, los mensajes del mismo grupo se procesan en orden, y los mensajes subsiguientes se retienen hasta que el mensaje anterior se procesa correctamente o se mueve a la cola de mensajes no entregados (DLQ). Una vez que un mensaje se coloca en la DLQ, ya no se reintenta, lo que crea un hueco en la secuencia. Sin embargo, los mensajes restantes se siguen entregando en orden. [ 3 ] [ 4 ] [ 5 ]
Las sesiones de Azure Service Bus funcionan de manera similar al mantener el orden dentro de una sesión, siempre que un único consumidor procese los mensajes secuencialmente. La implementación difiere de SQS FIFO, pero sigue el mismo principio fundamental de ordenación. [ 6 ] [ 7 ]
En contraste, Apache Kafka es un sistema de mensajería distribuido basado en registros que garantiza el orden dentro de particiones individuales en lugar de en todo el tema. A diferencia de los sistemas basados en colas, Kafka conserva los mensajes en un registro persistente de solo escritura, lo que permite que múltiples consumidores lean en diferentes desplazamientos. Kafka utiliza la gestión manual de desplazamientos, lo que otorga a los consumidores control sobre los reintentos y el manejo de fallos. Si un consumidor no puede procesar un mensaje, puede retrasar la confirmación del desplazamiento, impidiendo el progreso en esa partición mientras que las demás permanecen inalteradas. Este diseño basado en particiones permite el aislamiento de fallos y el procesamiento paralelo, al tiempo que permite mantener el orden dentro de las particiones, dependiendo del manejo por parte del consumidor. [ 8 ]
Proveedores
- Apache Kafka
- [ 9 ] Apache Kafka es un sistema distribuido que consta de servidores que almacenan y reenvían mensajes entre aplicaciones productoras, clientes y consumidores.
- IBM MQ
- [ 10 ] IBM MQ ofrece un servicio administrado que se puede utilizar en IBM Cloud y Amazon Web Services.
- Microsoft Azure Service Bus
- [ 11 ] Service Bus ofrece colas, temas y suscripciones, y reglas/acciones para admitir escenarios de publicación-suscripción, desacoplamiento temporal y equilibrio de carga. Azure Service Bus se basa en AMQP, lo que permite que cualquier pila de clientes AMQP 1.0 existente interactúe con Service Bus directamente o a través de clientes .Net, Java, Node y Python existentes. Los niveles Estándar y Premium permiten el pago por uso o recursos aislados a gran escala.
- Servicio de mensajería en la nube de Oracle
- [ 12 ] Este servicio proporciona una solución de mensajería para aplicaciones de comunicación asíncrona y se basa en la especificación de la API del Servicio de Mensajería Java (JMS). Cualquier plataforma de aplicación compatible con HTTP también puede utilizar Oracle Messaging Cloud Service a través de la interfaz REST. Para aplicaciones Java, Oracle Messaging Cloud Service proporciona una biblioteca Java que implementa y extiende la interfaz JMS 1.1. Esta biblioteca Java implementa la API JMS actuando como cliente de la API REST.
- Servicio de cola simple de Amazon
- [ 13 ] Admite mensajes de forma nativa de hasta 256K, o hasta 2GB transmitiendo la carga útil a través de S3. Altamente escalable, duradero y resistente. Proporciona FIFO flexible y entrega "al menos una vez" para proporcionar escala masiva. Admite API REST yJava Message Service. Baja latencia. UtilizaAmazon Web Services.
- IronMQ
- [ 14 ] Admite mensajes de hasta 64k; garantiza el orden; garantiza una única entrega; no hay demoras en la recuperación de mensajes. Admite la API REST y el protocolo de código abierto beanstalkd. Se ejecuta en múltiples nubes, incluyendo AWS y Rackspace. El escalado debe ser gestionado por el usuario.
- RabbitMQ
- [ 15 ] RabbitMQ es un intermediario de mensajería y transmisión confiable y maduro, fácil de implementar en entornos de nube, locales y en su máquina local. AdmiteAMQP,STOMP,MQTT
- StormMQ
- [ 16 ] La plataforma abierta admite mensajes de hasta 50 MB. UtilizaAMQPpara evitarla dependencia de un proveedory garantizar la neutralidad lingüística. La opción Locate-It permite a los clientes auditar la ubicación de sus datos en todo momento y cumplir con los principios de protección de datos.
- AnypointMQ
- [ 17 ] Un servicio de mensajería en la nube multiusuario para empresas que realiza escenarios avanzados de mensajería asíncrona entre aplicaciones. Anypoint MQ está totalmente integrado con Anypoint Platform, ofreciendo control de acceso basado en roles, administración de aplicaciones cliente y conectores.
Véase también
Referencias
- ↑ Chandrasekaran, Premanand; Krishnan, Karthik; Ford, Neal; Byars, Brandon; Buijze, Allard (2022). Diseño orientado al dominio con Java: una guía práctica . Packt Publishing. ISBN 978-1-80056-476-3.
- ↑ Hohpe, Gregor. Patrones de integración empresarial: diseño, construcción e implementación de soluciones de mensajería . Addison-Wesley Professional. ISBN 978-0-321-20068-6.
- ↑ "Lógica de entrega de cola FIFO en Amazon SQS - Amazon Simple Queue Service" . docs.aws.amazon.com . Consultado el 22 de marzo de 2025 .
- ↑ "Uso de colas de mensajes no entregados en Amazon SQS - Amazon Simple Queue Service" . docs.aws.amazon.com . Consultado el 22 de marzo de 2025 .
- ↑ "Colas FIFO de Amazon SQS - Amazon Simple Queue Service" . docs.aws.amazon.com . Consultado el 22 de marzo de 2025 .
- ↑ spelluru (21/03/2025). "Sesiones de mensajes de Azure Service Bus - Azure Service Bus" . learn.microsoft.com . Consultado el 22/03/2025 .
- ↑ spelluru (07/02/2025). "Colas de mensajes no entregados de Service Bus - Azure Service Bus" . learn.microsoft.com . Consultado el 22/03/2025 .
- ↑ Narkhede, Neha; Shapira, Gwen; Palino, Todd (2017). Kafka: la guía definitiva: procesamiento de datos y flujos en tiempo real a gran escala . Sebastopol, CA: O'Reilly Media. ISBN 978-1-4919-3616-0OCLC 933521388
- ↑ "Introducción a Kafka" . Apache Kafka . 26 de febrero de 2025.
- ↑ "IBM MQ en la nube" . IBM . 16 de noviembre de 2018.
- ↑ "Microsoft Azure Service Bus" . 23/03/2017.
- ↑ "Uso de Oracle Messaging Cloud Service" . Centro de ayuda de Oracle . Consultado el 20 de abril de 2018 .
- ↑ "Servicio de cola simple de Amazon (versión de API 2012-11-05)" . 2012-11-05.
- ↑ "IronMQ" . iron.io. Archivado del original el 5 de agosto de 2016. Consultado el 11 de enero de 2017. IronMQ
conecta sistemas distribuidos proporcionando una forma fiable de comunicación entre servicios y componentes. Con alta disponibilidad, persistencia por diseño y entrega única de mejor esfuerzo, IronMQ es la solución nativa en la nube más robusta para la arquitectura de aplicaciones modernas.
- ↑ "RabbitMQ" . Consultado el 26 de febrero de 2025 .
- ↑ "StormMQ" . 3 de mayo de 2010.
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "AnypointMQ" . 30 de agosto de 2016.
- computación en la nube
- Middleware orientado a mensajes