Todos los productos
Search
Centro de documentos

Platform For AI:Suscripción y envío del servicio de cola

Última actualización: Sep 04, 2026

La suscripción y el envío permiten enviar inmediatamente los datos listos al cliente. Esto reduce la latencia que provoca el sondeo mediante la API Get y disminuye la carga del servicio de cola generada por las consultas. Sin embargo, esta función tiene cierta complejidad porque involucra varios conceptos adicionales. Este tema describe cómo usar la función de suscripción y envío del servicio de cola.

Consumidor

Un consumidor es un programa cliente que se suscribe a datos del servicio de cola. Cuando el cliente usa la API Watch para solicitar datos, se crea un objeto de consumidor en el servicio de cola. Los parámetros de la API (como el tamaño de ventana y las etiquetas) se utilizan como atributos del consumidor. Consulte el estado del consumidor mediante la API Attribute. Ejemplo:

[OK] Attributes: 
consumers.list.[0] : Id: default_group.u1, Index: 0, Pending: 0, Status: Complete, Idle: 2.091s, Window: 0, Slots: 0, AutoCommit: true
consumers.list.[1] : Id: default_group.u2, Index: 0, Pending: 0, Status: Complete, Idle: 1.124s, Window: 0, Slots: 0, AutoCommit: true
consumers.stats.total : 2

consumers.stats.total indica el número total de consumidores. consumers.list es la lista de consumidores. La siguiente tabla describe las columnas:

Parámetro

Descripción

Id

El ID del consumidor, con el formato <consumer group Id.consumer Id>.

Index

El índice de los datos que consume el consumidor.

Pending

La cantidad de datos en proceso que el consumidor actual no ha confirmado.

Status

El estado del consumidor. Valores válidos:

  • Running: El consumidor está en ejecución.

  • Exit: El consumidor sale durante un periodo prolongado y no se consumen datos.

  • Complete: El consumidor sale y los datos se han consumido.

  • Leaving: El consumidor sale durante un periodo breve.

Window

El tamaño de la ventana del consumidor, que corresponde a la cantidad máxima de datos enviados.

Slots

El número de ventanas inactivas. Un valor de 0 indica que la ventana está ocupada.

AutoCommit

Indica si se confirman automáticamente los datos después de enviarlos.

Tags

Las condiciones de filtro del consumidor.

Nota

Cuando use la API Watch con etiquetas, asegúrese de que todos los consumidores del mismo grupo utilicen las mismas etiquetas.

Si ejecuta la etiqueta de datos al usar la API Watch, verá una columna adicional llamada Tags. Por ejemplo:

consumers.list.[0] : Id: ..., Pending: 0, ..., Window: ..., Tags: tags[foo=bar]

Esta columna indica las etiquetas de datos a las que se suscribe el consumidor. Los datos se entregan al consumidor solo cuando cumplen con las condiciones establecidas.

Grupo de consumidores

Un grupo de consumidores es un conjunto de consumidores que se suscriben al servicio de cola con las mismas condiciones de filtro. Los consumidores dentro del mismo grupo no pueden tener el mismo nombre, pero los de grupos distintos sí pueden compartirlo.

Dentro de un mismo grupo, los datos se distribuyen equitativamente entre cada consumidor. Entre grupos diferentes, los datos se envían en paralelo a los consumidores de cada grupo. Por ejemplo:

  • Los consumidores del mismo grupo reciben datos diferentes.

  • Los consumidores de grupos distintos reciben los mismos datos.

Importante

Si un consumidor elimina datos mediante la API, estos se borran inmediatamente y los consumidores de otros grupos no podrán recibirlos.

Consulte el estado de los consumidores en el servicio de cola mediante la API Attribute. A continuación se muestra un ejemplo:

groups.list.[0] : Id: default_group, Index: 0, Pending: 0, Delivered: 0, Consumers: 1
groups.list.[1] : Id: group, Index: 0, Pending: 0, Delivered: 1, Consumers: 0

groups.list es la lista de consumidores. La siguiente tabla describe las columnas:

Parámetro

Descripción

Id

El ID del grupo de consumidores.

Index

El índice que consume el grupo de consumidores actual, que corresponde al mayor índice de los consumidores dentro del grupo.

Pending

La cantidad de datos en proceso que el grupo de consumidores actual no ha confirmado.

Delivered

El número de mensajes enviados.

Consumers

La cantidad de datos consumidos en el grupo de consumidores.

No existe límite en el número de grupos de consumidores, pero estos no se limpian automáticamente. Una vez creados, conservan su estado.

Uso de consumidores y grupos de consumidores

Declare el consumidor y el grupo de consumidores mediante encabezados HTTP en la API Watch, o bien al inicializar su cliente en el SDK. También puede obtener la clave del encabezado HTTP si utiliza la API Attributes.

meta.header.group : X-EAS-QueueService-Gid
meta.header.user : X-EAS-QueueService-Uid

Declare el ID del consumidor y el ID del grupo de consumidores al que desea unirse mediante X-EAS-QueueService-Uid y X-EAS-QueueService-Gid, respectivamente.

Confirmación y negativo

El servicio de cola admite dos métodos de consumo: Commit y Negative. Ambos operan sobre el índice de datos (Index), pero tienen semánticas diferentes.

  • Commit indica que el consumidor recibió los datos y completó su procesamiento, por lo que se puede enviar el siguiente lote.

  • Negative indica que el consumidor recibió los datos pero no puede procesarlos. El servicio de cola decide si envía el siguiente lote según el código de error. En el modo Negative, declare la causa y el código de error en texto para que los datos se envíen a otros consumidores. La siguiente tabla enumera los códigos de error especiales que el servicio de cola puede manejar:

    Código

    Descripción

    Shutdown

    Indica que el consumidor está saliendo y que el servicio de cola dejará de enviarle datos.

Reequilibrio de datos

Es posible que no pueda confirmar datos en los siguientes escenarios:

  • Durante una actualización continua del servicio de predicción, algunos consumidores finalizan y quedan datos en proceso que no se pueden confirmar.

  • Ocurre un error interno y el consumidor falla.

  • El consumidor no puede procesar los datos recibidos y ejecuta una confirmación negativa (Negative).

El servicio de cola redistribuye estos datos no procesados entre otros consumidores. Este mecanismo se denomina reequilibrio de datos. El reequilibrio se realiza en los siguientes casos:

  • Cualquier consumidor entra en estado Exit.

  • El consumidor no recibe nuevos datos aunque la ventana tenga espacio available.

El servicio de cola mantiene un contador de entregas para cada dato. Cada vez que se reequilibra y distribuye un dato, el contador aumenta. Si durante el reequilibrio se detecta que el contador de entregas de un dato superó el máximo permitido, el dato se considera mensaje muerto. El servicio de cola ejecuta entonces la directiva configurada para mensajes muertos. De forma predeterminada, los datos se envían a la cola final.

Cola final

La cola final es una cola auxiliar que almacena datos que no se enviaron a los consumidores (como mensajes muertos o datos de control personalizados). Es una instancia de cola dentro del servicio de cola y utiliza la misma API. Cada cola de entrada y salida tiene su propia cola final.

Importante

La cola final y la cola estándar comparten la longitud máxima de la cola. Si la longitud máxima es 10 y la cola estándar ocupa 6 espacios, la cola final podrá tener como máximo 4. Si la cola final está llena, cualquier intento de escritura devolverá un error de longitud de cola. Por ello, supervise y limpie periódicamente la cola final.

Al llamar a la API, declare el acceso a la cola final si agrega el siguiente encabezado HTTP:

X-EAS-QueueService-Access-Rear: true