En esta página, se explica cómo recibir mensajes en orden.
Si deseas obtener más información sobre cómo recibir mensajes, consulta la descripción general de los suscriptores.
Recibe mensajes en orden
Si los mensajes tienen la misma clave de ordenamiento y están en la misma región, puedes habilitar el orden de los mensajes y recibirlos en el orden en que el servicio Pub/Sub las recibe.
Pub/Sub entrega cada mensaje al menos una vez, por lo que el servicio de Pub/Sub podría volver a entregarlos. Cuando recibes mensajes en orden y el servicio de Pub/Sub vuelve a entregar un mensaje con una clave de ordenamiento, Pub/Sub mantiene el orden y vuelve a entregar los mensajes posteriores con la misma clave de ordenamiento. El servicio Pub/Sub vuelve a enviar estos mensajes en el orden en que los recibió de forma original.
Cuando el servicio de Pub/Sub vuelve a enviar un mensaje con una clave de ordenamiento, el servicio de Pub/Sub también vuelve a entregar todos los mensajes posteriores con la misma clave de ordenamiento, incluidos los mensajes con confirmación de recepción. Si el orden de los mensajes y un tema de mensajes no entregados están habilitados en una suscripción, es posible que esto no sea así, ya que Pub/Sub reenvía mensajes a temas de mensajes no entregados en base del mejor esfuerzo. Cuando se reciben mensajes que se vuelven a entregar, debes volver a confirmarlos. No se garantiza que los mensajes posteriores se envíen sin confirmación de recepción de los anteriores.
Claves pedidas y entrega del mensaje
Los mensajes con la misma clave de ordenamiento están en orden.
No se garantiza que los mensajes con diferentes claves de ordenamiento se entreguen en orden, independientemente del momento de publicación.
La incapacidad de reconocer un mensaje puede retrasar la entrega de mensajes para otras claves de ordenamiento. Este problema es posible cuando los servidores se reinician de forma inesperada o hay cambios en el conjunto de servidores que se usaron debido a los cambios en el tráfico. Para preservar el orden de estos eventos, todos los mensajes publicados en el servidor anterior se deben confirmar antes de entregar los mensajes del servidor nuevo, incluso si son para diferentes claves de ordenamiento. Si no puedes garantizar una confirmación oportuna de todos los mensajes, procura adjuntar un tema de mensajes no entregados a la suscripción. Es posible que el orden de los mensajes no se conserve cuando se escriben en el tema de mensajes no entregados.
Habilita el ordenamiento de mensajes
Para recibir los mensajes en orden, configura la propiedad de ordenamiento de mensajes de la suscripción de la que recibes mensajes. Recibir mensajes en orden puede aumentar la latencia.
Puedes configurar la propiedad de ordenamiento de mensajes cuando creas una suscripción con Google Cloud Console, Google Cloud CLI o la API de Pub/Sub.
Consola
Para crear una suscripción con la propiedad de ordenamiento de mensajes, sigue estos pasos:
En la consola de Google Cloud, ve a la página Suscripciones.
Haz clic en Crear suscripción.
Ingresa un ID de suscripción.
Elige un tema para recibir mensajes de él.
En la sección Ordenamiento de mensajes, selecciona Ordenar mensajes con una clave de ordenamiento.
Haz clic en Crear.
gcloud
Para crear una suscripción con la propiedad de ordenamiento de mensajes, usa el comando gcloud pubsub subscriptions create
y la marca --enable-message-ordering
:
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --enable-message-ordering
Reemplaza SUBSCRIPTION_ID por el ID de la suscripción.
Si la solicitud es exitosa, la línea de comandos muestra una confirmación:
Created subscription [SUBSCRIPTION_ID].
REST
Para crear una suscripción con la propiedad de ordenamiento de mensajes, envía una solicitud PUT
como la siguiente:
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID Authorization: Bearer $(gcloud auth application-default print-access-token)
Reemplaza lo siguiente:
- PROJECT_ID: El ID del proyecto con el tema
- SUBSCRIPTION_ID: El ID de la suscripción
Especifica lo siguiente en el cuerpo de la solicitud:
{ "topic": TOPIC_ID, "enableMessageOrdering": true, }
Reemplaza TOPIC_ID por el ID del tema que deseas adjuntar a la suscripción.
Si la solicitud se realiza de forma correcta, la respuesta es la suscripción en formato JSON:
{ "name": projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID, "topic": projects/PROJECT_ID/topics/TOPIC_ID, "enableMessageOrdering": true, }
C++
Antes de probar esta muestra, sigue las instrucciones de configuración de C++ en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para C++.
C#
Antes de probar esta muestra, sigue las instrucciones de configuración de C# en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para C#.
Comienza a usarlo
Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Go.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Java.
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Node.js.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Python.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Ruby.
Una vez que se configura la propiedad de ordenamiento de mensajes, el servicio de Pub/Sub entrega mensajes con la misma clave de ordenamiento en el orden en que el servicio de Pub/Sub recibe los mensajes. Por ejemplo, si un publicador envía dos mensajes con la misma clave de ordenamiento, el servicio de Pub/Sub entrega primero el mensaje más antiguo.
¿Qué sigue?
Lee la entrada de blog sobre pedidos de entrega.
Supervisa tu suscripción.
Lee acerca de la publicación de mensajes con claves de ordenamiento.