Activadores de Cloud Pub/Sub

Pub/Sub de Google Cloud es un bus de mensajes de distribución global que se escala de forma automática en la medida que lo necesitas. Puedes usar functions.pubsub para crear una función que controle eventos de Google Cloud Pub/Sub.

Activa una función de Pub/Sub

Puedes activar una función cada vez que se envía un mensaje de Pub/Sub a un tema determinado. Debes especificar el nombre del tema de Pub/Sub que deseas que active tu función y configurar el evento dentro del controlador de eventos onPublish():

exports.helloPubSub = functions.pubsub.topic('topic-name').onPublish((message) => {
  // ...
});

Accede a la carga útil del mensaje de Pub/Sub

Puedes acceder a la carga útil del mensaje de Pub/Sub desde el objeto Message que se mostró a tu función. En el caso de los mensajes con JSON en el cuerpo del mensaje de Pub/Sub, el SDK de Firebase para Cloud Functions tiene una propiedad de ayuda que decodifica el mensaje. Por ejemplo, a continuación se muestra un mensaje publicado con una carga útil JSON simple:

gcloud pubsub topics publish topic-name --message '{"name":"Xenia"}'

Puedes acceder a una carga útil de datos JSON como la anterior a través de la propiedad json:

  // Get the `name` attribute of the PubSub message JSON body.
  let name = null;
  try {
    name = message.json.name;
  } catch (e) {
    console.error('PubSub message was not JSON', e);
  }

Las cargas útiles que no son JSON se incluyen en el mensaje de Pub/Sub como una string codificada en base 64 en el mensaje del objeto. Para leer un mensaje como el siguiente, debes decodificar la string codificada en base 64 como se muestra:

gcloud pubsub topics publish topic-name --message 'MyMessage'

// Decode the PubSub Message body.
const messageBody = message.data ? Buffer.from(message.data, 'base64').toString() : null;

Accede a los atributos del mensaje

El mensaje de Pub/Sub se puede enviar con atributos de datos configurados en el comando de publicación. Por ejemplo, podrías publicar un mensaje con un atributo name:

gcloud pubsub topics publish topic-name --attribute name=Xenia

Puedes leer estos atributos desde Message.attributes:

// Get the `name` attribute of the message.
const name = message.attributes.name;

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.