पब/उप ट्रिगर

Google क्लाउड का पब/सब एक विश्व स्तर पर वितरित संदेश बस है जो आपकी आवश्यकता के अनुसार स्वचालित रूप से स्केल करता है। आप function.pubsub का उपयोग करके एक ऐसा फ़ंक्शन बना सकते हैं जो Pub/Sub ईवेंट को हैंडल functions.pubsub

एक पब/उप फ़ंक्शन ट्रिगर करें

जब भी किसी विशिष्ट विषय पर कोई नया पब/सब संदेश भेजा जाता है तो आप एक फ़ंक्शन ट्रिगर कर सकते हैं। आपको पब/उप विषय नाम निर्दिष्ट करना होगा जिसे आप अपने फ़ंक्शन को ट्रिगर करना चाहते हैं, और ईवेंट को onPublish() ईवेंट हैंडलर के भीतर सेट करें:

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

पब/उप संदेश पेलोड तक पहुंचें

पब/सब संदेश के लिए पेलोड को आपके फ़ंक्शन पर लौटाए गए Message ऑब्जेक्ट से एक्सेस किया जा सकता है। पब/उप संदेश के मुख्य भाग में JSON वाले संदेशों के लिए, क्लाउड फ़ंक्शंस के लिए Firebase SDK में संदेश को डीकोड करने के लिए एक सहायक गुण होता है। उदाहरण के लिए, यहां एक साधारण JSON पेलोड के साथ प्रकाशित एक संदेश दिया गया है:

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

आप इस तरह से एक JSON डेटा पेलोड को 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);
  }

अन्य, गैर-JSON पेलोड पब/सब संदेश में संदेश ऑब्जेक्ट में बेस 64 एन्कोडेड स्ट्रिंग्स के रूप में निहित हैं। निम्न की तरह एक संदेश पढ़ने के लिए, आपको दिखाए गए अनुसार बेस 64 एन्कोडेड स्ट्रिंग को डीकोड करना होगा:

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

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

एक्सेस संदेश विशेषताएँ

पब/उप संदेश प्रकाशित कमांड में सेट डेटा विशेषताओं के साथ भेजा जा सकता है। उदाहरण के लिए, आप name विशेषता के साथ एक संदेश प्रकाशित कर सकते हैं:

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

आप ऐसी विशेषताओं को Message.attributes से पढ़ सकते हैं:

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

आप देख सकते हैं कि कुछ बुनियादी डेटा जैसे संदेश आईडी या संदेश प्रकाशित होने का समय Message.attributes में उपलब्ध नहीं है। इसे हल करने के लिए, आप ट्रिगरिंग ईवेंट के संदर्भ. context.eventId और context.timestamp तक पहुंच सकते हैं, जिसके साथ आप यह निर्धारित कर सकते हैं कि कोई संदेश कब प्रकाशित हुआ था और एक संदेश को दूसरे से अलग कर सकते हैं। उदाहरण के लिए:

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);
});