Pub/Sub de Google Cloud est un service de messagerie distribué dans le monde entier qui effectue un scaling automatique en fonction des besoins. Toi
pouvez créer une fonction qui gère les événements Pub/Sub en utilisant
functions.pubsub
Déclencher une fonction Pub/Sub
Vous pouvez déclencher une fonction chaque fois qu'un nouveau message Pub/Sub est envoyé
sur un sujet spécifique. Vous devez spécifier le nom du sujet Pub/Sub qui
vous souhaitez déclencher votre fonction, et définissez l'événement dans la
onPublish()
gestionnaire d'événements:
exports.helloPubSub = functions.pubsub.topic('topic-name').onPublish((message) => { // ... });
Accéder à la charge utile des messages Pub/Sub {:#access-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 message Pub/Sub
le SDK Firebase pour Cloud Functions dispose d'une propriété d'assistance permettant de décoder le message. Pour
Voici un exemple de message publié avec une charge utile JSON simple:
gcloud pubsub topics publish topic-name --message '{"name":"Xenia"}'
Vous pouvez accéder à une charge utile de données JSON comme suit 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) { functions.logger.error('PubSub message was not JSON', e); }
D'autres charges utiles non JSON sont contenues dans le message Pub/Sub en tant que Chaînes encodées en base64 dans l'objet message. Pour lire un message tel que le ci-dessous, vous devez décoder la chaîne encodée en base64 comme indiqué ci-dessous:
gcloud pubsub topics publish topic-name --message 'MyMessage'
// Decode the PubSub Message body. const messageBody = message.data ? Buffer.from(message.data, 'base64').toString() : null;
Attributs du message d'accès {:#access-message}
Le message Pub/Sub peut être envoyé avec des attributs de données définis dans le
publier la commande. Par exemple, vous pouvez publier un message avec un name
attribut:
gcloud pubsub topics publish topic-name --attribute name=Xenia
Vous pouvez lire ces attributs à partir de
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'identifiant du message ou le paramètre
l'heure de publication du message n'est pas disponible dans Message.attributes
. Pour contourner ce problème, vous pouvez accéder à ces informations dans le EventContext
de l'événement déclencheur.
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);
});