Cette page a été traduite par l'API Cloud Translation.
Switch to English

Déclencheurs Cloud Pub / Sub

Google Cloud Pub / Sub est un bus de messages distribué à l'échelle mondiale qui s'adapte automatiquement à vos besoins. Vous pouvez créer une fonction qui gère les événements Google Cloud Pub / Sub à l'aide de functions.pubsub .

Déclencher une fonction pub / sous

Vous pouvez déclencher une fonction chaque fois qu'un nouveau message Pub / Sub est envoyé à un sujet spécifique. Vous devez spécifier le nom du sujet Pub / Sub sur lequel vous souhaitez déclencher votre fonction et définir l'événement dans le gestionnaire d'événements onPublish() :

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

Accéder à la charge utile du message pub / sub

La charge utile du message Pub / Sub est accessible à partir de l'objet Message renvoyé à votre fonction. Pour les messages avec JSON dans le corps du message Pub / Sub, le SDK Firebase pour Cloud Functions dispose d'une propriété d'assistance pour décoder le message. Par exemple, voici un message publié avec une simple charge utile JSON:

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

Vous pouvez accéder à une charge de données JSON comme celle-ci via la propriété 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);
  }

D'autres charges utiles non JSON sont contenues dans le message Pub / Sub sous forme de chaînes codées en base64 dans l'objet de message. Pour lire un message comme celui-ci, vous devez décoder la chaîne encodée en base64 comme indiqué:

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

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

Accéder aux attributs de message

Le message Pub / Sub peut être envoyé avec les attributs de données définis dans la commande de publication. Par exemple, vous pouvez publier un message avec un attribut de name :

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

Vous pouvez lire ces attributs depuis Message.attributes :

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

Vous remarquerez peut-être que certaines données de base telles que l'ID de message ou l'heure de publication du message ne sont pas disponibles dans Message.attributes . Pour contourner ce problème, vous pouvez accéder aux context.eventId et context.timestamp l'événement déclencheur, avec lesquels vous pouvez déterminer quand un message a été publié et différencier un message d'un autre. Par exemple:

 exports.myFunction = functions.pubsub.topic('topic1').onPublish((message, context) => {
    console.log('The function was triggered at ', context.timestamp);
    console.log('The unique ID for the event is', context.eventId);
});