Amazon Simple Queue Service (Amazon SQS) es un servicio web que le proporciona acceso a colas de mensajes que almacenan mensajes en espera de ser procesados. Con Amazon SQS, puede crear con rapidez aplicaciones de colas de mensajes capaces de ejecutarse en cualquier equipo.

Amazon SQS ofrece un servicio de cola alojado, con alta capacidad de escalado, seguro y fiable para almacenar mensajes en tránsito entre equipos. Con Amazon SQS, puede trasladar datos entre diversos componentes de aplicaciones distribuidos, sin perder mensajes y sin que cada componente tenga que estar siempre disponible. Puede intercambiar información confidencial entre aplicaciones con el cifrado del lado del servidor (SSE) de Amazon SQS integrado con AWS Key Management Service (KMS).

Amazon SQS puede ayudarle a crear una aplicación distribuida con componentes desacoplados, en estrecha colaboración con Amazon Elastic Compute Cloud (Amazon EC2) y los demás servicios web de la infraestructura de AWS.

Amazon SQS ofrece dos tipos de cola para diferentes requisitos de aplicaciones:

Colas estándar
Amazon SQS ofrece de forma predeterminada el tipo de cola estándar. Una cola estándar le permite contar con un número de transacciones casi ilimitado por segundo. Las colas estándar garantizan que cada mensaje se entrega al menos una vez. Sin embargo, ocasionalmente (debido a la arquitectura altamente distribuida que permite una gran capacidad de proceso), puede suceder más de una copia de un mensaje no se entregue en orden. Las colas estándar proporcionan un protocolo de ordenación del máximo esfuerzo, lo que garantiza que los mensajes se entregan en términos generales en el mismo orden en que se envían.

Colas FIFO – ¡Nuevo!
La cola FIFO complementa la cola estándar. Las características más importantes de este tipo de colas son la entrega FIFO (primero en entrar, primero en salir) y el procesamiento único: se conserva el orden en que se envían y reciben los menajes, y el mensaje se envía una vez y permanece disponible hasta que el cliente lo procesa y elimina; los duplicados no se introducen en la cola. Las colas FIFO también admiten los grupos de mensaje, que permiten secuencias múltiples ordenadas en una única cola. Las colas FIFO están limitadas a 300 transacciones por segundo (TPS) por acción de API, pero tienen todas las capacidades de las colas estándar.

 

Comience con AWS de forma gratuita

Cree una cuenta gratuita
O inicie sesión en la Consola

La capa gratuita de AWS incluye 1 millón de solicitudes con Amazon Simple Queue Service (SQS).

Consulte los detalles de la capa gratuita de AWS »

Capital One comparte cómo utiliza Amazon SQS para migrar aplicaciones bancarias principales a la nube.

sqs_thumb_reInvent2016-migrating-ent-messaging

El acceso a Amazon SQS es muy sencillo a través de la Consola de administración de AWS, que ofrece a los usuarios una interfaz web en la que solo tendrá que apuntar y hacer clic para configurar y administrar el servicio.

Amazon SQS utiliza una interfaz muy flexible y fácil de usar. Se proporcionan las siguientes solicitudes:

Operaciones con mensajes básicas

  • SendMessage: enviar mensajes a una cola especificada.
  • ReceiveMessage: devolver uno o varios mensajes de una cola especificada.
  • DeleteMessage: eliminar un mensaje recibido anteriormente de una cola especificada.
  • ChangeMessageVisibility: cambiar el tiempo de espera de visibilidad de un mensaje recibido anteriormente.

Operaciones con mensajes por lotes

  • SendMessageBatch: enviar varios mensajes a una cola especificada.
  • DeleteMessageBatch: eliminar varios mensajes recibidos previamente de una cola especificada.
  • ChangeMessageVisibilityBatch: cambiar el tiempo de espera de visibilidad de varios mensajes recibidos anteriormente.

Administración básica de cola

  • CreateQueue: crear colas para usar con la cuenta de AWS.
  • ListQueues: mostrar una lista de las colas existentes.
  • DeleteQueue: suprimir una de sus colas.
  • PurgeQueue: eliminar todos los mensajes en una cola.

Administración avanzada de cola

  • SetQueueAttributes: controlar la configuración de la cola, como el tiempo de espera de visibilidad (el tiempo que los mensajes están bloqueados después de ser leídos, para que no se puedan volver a leer), un valor de retardo o los parámetros de la cola de mensajes fallidos.
  • GetQueueAttributes: obtener información sobre una cola, como el tiempo de espera de visibilidad, el número de mensajes que contiene o el tamaño máximo de los mensajes.
  • GetQueueUrl: obtener la URL de la cola.
  • AddPermission: compartir una cola con otra cuenta de AWS para una determinada cola.
  • RemovePermission: eliminar una cuenta de AWS de la compartición de cola para una determinada cola.
  • ListDeadLetterSourceQueues: listar las colas adjuntas a una cola de mensajes fallidos.

Para obtener más detalles, consulte la Guía de API de Amazon SQS.

Los mensajes que se almacenan en Amazon SQS tienen un ciclo de vida fácil de administrar y que garantiza el procesamiento de todos ellos.

  1. Un sistema que tenga que enviar un mensaje buscará una cola de Amazon SQS y utilizará SendMessage para añadir un nuevo mensaje a la misma.
  2. Otro sistema que procesa mensajes necesita más menajes que procesar, de modo que llama a la función ReceiveMessage y se devuelve este mensaje.
  3. Después de que ReceiveMessage devuelva un mensaje, ninguna otra función ReceiveMessage devolverá dicho mensaje hasta que haya transcurrido el tiempo de espera de visibilidad. Esto impide que distintos consumidores procesen el mismo mensaje a la vez.
  4. Si el sistema que procesa mensajes termina de trabajar con este mensaje correctamente, llama a la función DeleteMessage, la cual elimina el mensaje de la cola para que nadie más lo procese. Si el sistema no puede procesar el mensaje correctamente, lo leerá otra llamada ReceiveMessage en cuanto transcurra el tiempo de espera de visibilidad.
  5. Si ha asociado una cola de mensajes fallidos con una cola de origen, los mensajes se transferirán a la cola de mensajes fallidos después de que se alcance el número máximo de intentos de entrega que se haya especificado.
  • Los desarrolladores pueden crear un número ilimitado de colas de Amazon SQS, con el número de mensajes que deseen.
    • Es posible crear una cola en cualquier región.
    • La carga del mensaje puede contener un máximo de 256 KB de texto en cualquier formato. Cada porción de 64 KB de carga se factura como una solicitud. Por ejemplo, una sola llamada a API con una carga de 256 KB se facturará como cuatro solicitudes.
    • Los mensajes se pueden enviar, recibir o eliminar en lotes de hasta 10 mensajes o 256 KB. Los lotes cuestan lo mismo que los mensajes individuales, por lo que SQS puede ser incluso más rentable para los clientes que usan los lotes.
    • Para enviar mensajes mayores de 256 KB, puede utilizar Amazon SQS Extended Client Library for Java, que emplea Amazon S3 para almacenar la carga de los mensajes. Se envía mediante SQS una referencia a la carga del mensaje.
    • Las llamadas selectivas largas reducen las llamadas selectivas no pertinentes para ayudar a reducir los costes mientras se reciben mensajes nuevos lo más rápido posible. Cuando la cola esté vacía, las solicitudes de llamada selectiva larga esperarán hasta 20 segundos para que llegue el siguiente mensaje. Las solicitudes de sondeo largas cuestan lo mismo que las solicitudes normales.
    • Los mensajes se pueden retener en colas durante un máximo de 14 días.
    • Los mensajes se pueden enviar y leer simultáneamente.
  • Cuando se recibe un mensaje, este queda «bloqueado» mientras se procesa. Esto impide que otros equipos lo procesen simultáneamente. Si el mensaje no se procesa correctamente, el bloqueo expira y el mensaje vuelve a estar disponible. Si una aplicación necesita más tiempo para procesar un mensaje, es posible modificar de forma dinámica el tiempo de espera de «bloqueo» mediante la operación ChangeMessageVisibility.
  • Los desarrolladores pueden compartir de manera segura colas de Amazon SQS anónimamente o con cuentas de AWS específicas. El intercambio de colas también se puede restringir por dirección IP y por hora del día.
  • ¡NUEVO! El cifrado del lado del servidor (SSE) protege el contenido de los mensajes de las colas de Amazon SQS con claves que se administran en AWS Key Management Service (AWS KMS). SSE cifra mensajes tan pronto como Amazon SQS las recibe. Los mensajes se almacenan de una manera cifrada y Amazon SQS descifra los mensajes solo cuando se envían a un consumidor autorizado.
  • En combinación con Amazon Simple Notification Service (SNS), los desarrolladores pueden repartir mensajes idénticos a varias colas de SQS estándar. De este modo, un mensaje publicado en un tema SNS se distribuye en paralelo a varias colas de SQS estándar. Los desarrolladores pueden crear aplicaciones que aprovechen este procesamiento asíncrono y en paralelo. Por ejemplo, un desarrollador podría publicar un mensaje en un tema cada vez que se carga una nueva imagen. Procesos independientes que leyeran de distintas colas podrían generar imágenes en miniatura, realizar reconocimiento de imagen y almacenar los metadatos de la imagen. SNS actualmente no admite el ordenamiento FIFO, y como tal, las colas FIFO no son compatibles.
  • Los desarrolladores pueden administrar los mensajes atascados (mensajes que un consumidor no ha logrado procesar correctamente) con las colas de mensajes fallidos. Cuando se excede el número máximo de recepciones para un mensaje, este se transferirá a la cola de mensajes fallidos asociada con la cola original. Los desarrolladores pueden configurar procesos de consumidores independientes para colas de mensajes fallidos para ayudar a analizar y comprender por qué los mensajes se quedan atascados. Los DLQ deben ser del mismo tipo que la cola fuente (estándar o FIFO).

Las colas de mensajes de Amazon SQS se pueden utilizar con otros servicios de AWS como Redshift, DynamoDB, RDS, EC2, ECS, Lambda y S3, para que las aplicaciones distribuidas sean más escalables y fiables. A continuación, se muestran algunos patrones de diseño habituales:

  • Colas de trabajo: desacople componentes de una aplicación distribuida que es posible que no procesen la misma cantidad de trabajo de forma simultánea.
  • Búfer y operaciones por lotes: agregue escalabilidad y fiabilidad a su arquitectura, y resuelva los picos temporales en el volumen sin perder mensajes ni aumentar la latencia.
  • Descarga de solicitudes: retire las operaciones lentas de las rutas de solicitud interactivas poniendo la solicitud en cola.
  • Distribución: combine SQS con Simple Notification Service (SNS) para enviar copias idénticas de un mensaje a varias colas de forma paralela.
  • Prioridad: utilice colas separadas para asignar prioridades de trabajo.
  • Escalabilidad: como las colas de mensajes desacoplan sus procesos, es fácil aumentar la tasa de envío o recepción de mensajes: basta con añadir otro proceso. 
  • Resistencia: cuando una parte de su sistema cae, no tiene por qué echar abajo todo el sistema. Las colas de mensajes desacoplan componentes de su sistema, de modo que, si cae un proceso que está leyendo mensajes de la cola, es posible añadir dichos mensajes a la cola para que se procesen cuando el sistema se recupere.

El uso que realice de este servicio está sujeto al Contrato de cliente de Amazon Web Services.