Visión general de Queue

Oracle Cloud Infrastructure (OCI) Queue es un servicio sin servidor totalmente gestionado que ayuda a disociar sistemas y a activar operaciones asíncronas. Queue maneja grandes volúmenes de datos transaccionales que requieren mensajes procesados de forma independiente sin pérdidas ni duplicación. Queue soporta la escala automática y transparente basada en el rendimiento para productores y consumidores. Queue utiliza estándares abiertos para soportar la comunicación con cualquier cliente o productor con el mínimo esfuerzo.

El servicio OCI Queue se basa en cuatro principios:

Publicación
Uno o varios productores pueden publicar mensajes en una cola, cada uno con un período de retención. Si no se especifica la retención, el mensaje caduca mediante un período de retención definido en el nivel de cola. Un mensaje contiene una carga útil en forma de cadena.
Consumo
Varios consumidores pueden consumir mensajes de una única cola. El recuento de consumidores se puede escalar junto con el ratio de mensajes que se publican. Después de entregar un mensaje a un consumidor, el mensaje se oculta a otros consumidores durante un período de tiempo predefinido, que se conoce como timeout de visibilidad.
Actualización
Si el procesamiento de un mensaje tarda más de lo esperado, los consumidores pueden ampliar el timeout de visibilidad de un mensaje. La ampliación del timeout de visibilidad evita que el mensaje se devuelva a la cola y se entregue a otro consumidor.
Supresión
Una vez que un mensaje se ha entregado a un consumidor y este lo ha procesado, se debe suprimir para evitar que se vuelva a entregar a otro consumidor.

Ventajas

El servicio Queue proporciona las siguientes ventajas.

Separación de aplicaciones

Queue ayuda a separar aplicaciones y sistemas mediante una arquitectura basada en eventos. La separación garantiza que los componentes de aplicación individuales se puedan ampliar de forma independiente y que, a medida que se creen nuevos componentes de aplicación, puedan publicar o suscribirse a la cola.

Diagrama que representa a un productor que envía mensajes a varias colas consumidas por un consumidor.

Procesamiento fiable de mensajes

Queue garantiza que nunca se pierda un mensaje, incluso si el consumidor no está disponible para el consumo. Un mensaje publicado es persistente hasta que se suprime o caduca.

Si un mensaje no se consume correctamente, se envía a una cola de letras muertas (DLQ). Las colas de letras muertas le permiten aislar mensajes problemáticos para determinar por qué fallan. El aislamiento y el consumo de mensajes problemáticos de esta forma puede garantizar la entrega correcta a una aplicación de consumidor al menos una vez. Consulte Colas de mensajes con problemas de entrega para obtener más información.

Estándares abiertos

Se puede llamar a Queue mediante la definición de la API de RESTful (con una especificación de Open API) o mediante el protocolo STOMP estándar del sector.

Conceptos

El servicio Queue utiliza los siguientes conceptos.

mensaje
Un mensaje es un elemento de una cola que contiene una carga útil en forma de cadena. La cadena puede tener cualquier formato, incluidos XML, JSON, CSV, un mensaje binario Base64-encoded e incluso formatos comprimidos como gzip. Los productores y consumidores deben acordar el formato de los mensajes. Cada mensaje se procesa de forma independiente.
productor
Un cliente que envía mensajes a la cola.
consumidor
Un cliente que recibe mensajes de una cola. El consumidor también es responsable de suprimir los mensajes de la cola una vez recibidos los mensajes.
Canal
Destino efímero en una cola que se puede crear a petición. Los mensajes se pueden publicar en un canal específico dentro de una cola, y los consumidores pueden recuperar mensajes de canales específicos. Para obtener más información, consulte Canales.
período de retención máximo
El tiempo que una cola conserva un mensaje hasta que el sistema elimina automáticamente el mensaje, si no lo suprime un consumidor. El período máximo de retención se puede configurar en valores de 10 segundos a 7 días en el nivel de cola. El valor por defecto es 1 día.
recuento de entregas
Número de veces que se entrega un mensaje a un consumidor a petición.
máximo de intentos de entrega
Número de veces que se entrega un mensaje a un consumidor, pero no se actualiza ni suprime, antes de que se envíe a una cola de letras muertas (DLQ). El número máximo de intentos de entrega se puede configurar con valores del 1 al 20 en el nivel de cola. Para obtener más información, consulte Recuento de entregas.
timeout del sondeo
Período de tiempo que esperará un consumidor a que se consuman los mensajes. El aumento del timeout de sondeo reduce el número de veces que un consumidor solicita mensajes de la cola pero la respuesta indica que no hay mensajes disponibles para consumir. El timeout de sondeo se puede configurar en valores de 0 a 30 segundos en el nivel de cola, y los consumidores pueden definir el valor al solicitar mensajes. El valor por defecto es 30 segundos. Para obtener más información, consulte Sondeo largo.
timeout de visibilidad
Período de tiempo durante el cual un mensaje recibido de la cola por un consumidor no es visible para otros consumidores. El timeout de visibilidad se puede configurar en valores de 1 segundo a 12 horas en el nivel de cola, y los consumidores pueden definir el valor al solicitar mensajes. El valor por defecto es 30 segundos. Para obtener más información, consulte Bloqueo de mensajes.
mensajes visibles
Número de mensajes actualmente en una cola disponibles para su consumo.
mensajes en curso
Número de mensajes entregados a un consumidor pero que aún no se han suprimido. Los mensajes en curso no están disponibles para una nueva entrega hasta que haya transcurrido el timeout de visibilidad.
cola de mensajes con problemas de entrega
Si un mensaje no se consume correctamente y tiene más intentos de entrega que el máximo de intentos de entrega configurado, el mensaje se transfiere a una cola de mensajes con problemas de entrega (DLQ). Para obtener más información, consulte Colas de mensajes con problemas de entrega.

Garantías

El servicio Queue proporciona las siguientes garantías.

  • Se garantiza que un mensaje publicado correctamente es duradero hasta que se suprime o haya transcurrido su período de retención. La publicación de un mensaje se considera correcta cuando el servicio Queue devuelve un acuse de recibo al productor. Es independiente de si se ha recibido o no la respuesta.
  • Se garantiza que un mensaje dentro del timeout de visibilidad no se entregue a otro consumidor hasta que caduque ese timeout.
  • El servicio Queue no suprimirá un mensaje antes de que finalice el período de retención. Un consumidor puede procesar y suprimir un mensaje durante su período de retención.

Autenticación y autorización

Cada servicio de Oracle Cloud Infrastructure se integra con IAM con fines de autenticación y autorización para todas las interfaces (la consola, el SDK o la CLI, y la API de REST).

Un administrador de la organización debe configurar grupos, compartimentos y políticas que controlen los usuarios que pueden acceder a determinados servicios y recursos, así como el tipo de acceso de que disponen. Por ejemplo, las políticas controlan quién puede crear usuarios, grupos y compartimentos, o quién puede crear y gestionar despliegues virtuales.

Formas de acceder a Queue

Puede acceder a Queue mediante la consola (una interfaz basada en explorador), la CLI de Oracle Cloud Infrastructure o las API de REST.

En esta guía se incluyen instrucciones para los tres métodos.

Límites de servicio

Cuando se registra en Oracle Cloud Infrastructure, se configura un conjunto de límites de servicio para su arrendamiento. El límite de servicio es la cuota o la asignación definida en un recurso. Revise los siguientes límites de servicio de los recursos de Queue.

Recurso Detalles
Colas 10 por arrendamiento por región

Consulte la sección Límites de servicio para obtener más información sobre los límites de servicio y buscar las instrucciones para solicitar un aumento del límite. Para definir límites específicos de compartimentos en un recurso o familia de recursos, los administradores pueden utilizar cuotas de compartimentos.

Límites funcionales

Además de los límites de recursos de servicio, existen límites de cola específicos para las funciones y la funcionalidad.

Limitar Detalles
Canales por cola 256 por cola
Tamaño máximo de solicitud PutMessage 512 KB y 20 mensajes
Tamaño máximo de respuesta GetMessage 2 MB y 20 mensajes
Tamaño máximo del mensaje 256 KB
Número máximo de mensajes en curso 100 000 por cola
Máximo de mensajes por cola Sin límites
Retención de mensajes Máximo: 7 días

Mínimo: 10 segundos

Valor por defecto: 1 día

Timeout de visibilidad de mensaje Máximo: 12 horas

Mínimo: 0 segundos en el nivel de mensaje

Mínimo: 1 segundo en el nivel de cola

Valor por defecto: 30 segundos

Máximo de solicitudes GET simultáneas 1000 solicitudes por segundo por cola
Máximo de operaciones de mensajes 1000 solicitudes por segundos por API por cola
Ratio máximo de datos Entrada por cola: 10 MB/s

Salida por cola: 10 MB/s

Timeout del sondeo Máximo: 30 segundos

Mínimo: 0 segundos

Rendimiento de STOMP 10 MB/s por conexión STOMP
Almacenamiento 20 GB por arrendamiento

2 GB por cola