Preguntas frecuentes

Preguntas generales

¿Pub/Sub está relacionado con Firebase Cloud Messaging (FCM) o con Google Cloud Messaging (GCM) obsoleto?

Sí y no. Cada uno de estos sistemas se usa con el fin de entregar mensajes, pero FCM se usa para enviar mensajes hacia y desde dispositivos de usuario final, mientras que Pub/Sub se usa para comunicarse entre servidores. FCM está diseñado para escalar a una gran cantidad de extremos de entrega, pero tiene una capacidad de procesamiento baja (mensajes por segundo por canal). Pub/Sub no tiene límites en la capacidad de procesamiento y tiene una API más genérica.

¿Está relacionado con PubSubHubbub?

No. Aunque los empleados de Google se involucraron en el desarrollo de PubSubHubbub, sus fortalezas en RSS y distribución de contenido en general no son casos prácticos para los que Pub/Sub está diseñado. Aparte del nombre, tienen muy poco en común.

¿Puedo usar Pub/Sub para comunicarme entre diferentes módulos de App Engine?

Sí. Puedes usar Pub/Sub para enviar y recibir mensajes entre diferentes módulos de una aplicación de App Engine y, también, incluso entre diferentes aplicaciones del mismo proyecto, sin ninguna configuración especial de LCA. Para lograr una publicación de latencia baja, debes guardar el publicador cliente en caché mediante su inicialización como una variable global.

¿Puedo usar Pub/Sub con plataformas que no sean de App Engine?

Sí. Puedes usar Pub/Sub con aplicaciones alojadas en Google Compute Engine o incluso en plataformas que no sean de Google. Todo lo que necesitas es un proyecto de Google Cloud Console para comenzar. Para lograr una publicación de latencia baja, considera almacenar el publicador cliente en caché haciendo que sea global.

¿Cómo puedo conectar aplicaciones de App Engine y Compute Engine?

Usa la entrega de envío para enviar mensajes de latencia baja de Compute Engine a App Engine. Usa la entrega de extracción para enviar datos de App Engine a una gran cantidad de suscriptores de Compute Engine.

¿Cómo puedo supervisar las métricas de Pub/Sub?

Consulta este artículo.

¿Pub/Sub está integrado a Cloud KMS?

Sí. Los temas de Pub/Sub se pueden configurar para proteger el contenido de los mensajes con una clave en Cloud KMS. Para obtener más información, consulta la página sobre cómo usar claves de encriptación administradas por el cliente.

Preguntas técnicas

¿Los mensajes se entregan en orden?

Pub/Sub no garantiza que los mensajes se entreguen en orden ni la entrega FIFO. Los mensajes se entregan lo más rápido posible. Los mensajes antiguos tienen preferencia, pero esto no está garantizado. Los pedidos estrictos están en desacuerdo con las garantías de disponibilidad y escalabilidad de Pub/Sub. Consulta página sobre el orden de mensajes para obtener más información sobre este tema.

¿Por qué recibo errores de cuota cuando mi uso está muy por debajo de los límites?

Las cuotas se aplican al proyecto asociado con el cliente autenticado, como se explica en Cuotas y límites. Asegúrate de que usas una cuenta de servicio o API_KEY asociada con un proyecto que tenga suficientes cuotas. En particular, la línea de comandos de gcloud usa un proyecto compartido, y las cuotas son muy limitadas.

¿Por qué hay demasiados mensajes duplicados?

Pub/Sub garantiza la entrega de mensajes al menos una vez, lo que significa que es posible que se envíen duplicados en algunos casos. Sin embargo, una tasa de duplicados alta puede indicar que el cliente no confirma los mensajes dentro del ack_deadline_seconds configurado, y que Pub/Sub está volviendo a intentar la entrega del mensaje. Esto se puede observar en las métricas de supervisión pubsub.googleapis.com/subscription/pull_ack_message_operation_count para suscripciones de extracción y pubsub.googleapis.com/subscription/push_request_count para suscripciones de envío. Busca valores elevados de expired o webhook_timeout en /response_code. Es muy probable que esto suceda si hay muchos mensajes pequeños, ya que Pub/Sub puede agrupar mensajes de forma interna, y si un lote no confirmado del todo se volverá a enviar por completo.

Otra posibilidad es que el suscriptor no confirme algunos mensajes porque la ruta de acceso del código que procesa esos mensajes específicos falla, y la llamada Acknowledge nunca se realiza; o el extremo de envío nunca responde o responde con un error.

¿Cómo detecto mensajes duplicados?

Pub/Sub asigna un “message_id” único a cada mensaje, que puede usarse para detectar mensajes duplicados recibidos por el suscriptor. Sin embargo, esto no te permitirá detectar duplicados que provengan de múltiples solicitudes de publicación en los mismos datos. Para detectarlos es necesario que el publicador proporcione un identificador de mensaje único. Consulta E/S de Pub/Sub para obtener más información.