पब/उप ट्रिगर


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

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

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

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

पब/उप संदेश पेलोड तक पहुंचें {:#access-pub/sub}

पब/सब संदेश के लिए पेलोड आपके फ़ंक्शन पर लौटाए गए Message ऑब्जेक्ट से पहुंच योग्य है। पब/सब मैसेज बॉडी में JSON वाले संदेशों के लिए, क्लाउड फ़ंक्शंस के लिए फ़ायरबेस 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 में उपलब्ध नहीं हैं। इसके आसपास काम करने के लिए, आप ट्रिगरिंग इवेंट के EventContext में इन विवरणों तक पहुंच सकते हैं। उदाहरण के लिए:

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