Pub/Sub ट्रिगर (1st gen)

.

Google Cloud's Pub/Sub दुनिया भर में डिस्ट्रिब्यूट किया गया मैसेज बस है. यह आपकी ज़रूरत के हिसाब से, अपने-आप स्केल होता है. ऐसा फ़ंक्शन बनाया जा सकता है जो Pub/Sub इवेंट को मैनेज करता है.functions.pubsub

Pub/Sub फ़ंक्शन को ट्रिगर करना

किसी खास विषय पर नया Pub/Sub मैसेज भेजे जाने पर , किसी फ़ंक्शन को ट्रिगर किया जा सकता है. आपको उस Pub/Sub विषय का नाम बताना होगा जिसके लिए आपको अपना फ़ंक्शन ट्रिगर करना है. साथ ही, onPublish() इवेंट हैंडलर में इवेंट सेट करना होगा:

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

Pub/Sub मैसेज के पेलोड को ऐक्सेस करना

Pub/Sub मैसेज का पेलोड, आपके फ़ंक्शन को दिखाए गए Message ऑब्जेक्ट से ऐक्सेस किया जा सकता है. मैसेज के Pub/Sub मुख्य हिस्से में JSON वाले मैसेज के लिए, Firebase SDK टूल में मैसेज को डिकोड करने के लिए, एक हेल्पर प्रॉपर्टी होती है.Cloud Functions उदाहरण के लिए, यहां एक सामान्य 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 के अलावा अन्य पेलोड, Pub/Sub मैसेज में मैसेज ऑब्जेक्ट में base64 एन्कोड की गई स्ट्रिंग के तौर पर शामिल होते हैं. नीचे दिए गए मैसेज को पढ़ने के लिए, आपको base64 एन्कोड की गई स्ट्रिंग को डिकोड करना होगा. इसके लिए, यहां दिया गया तरीका अपनाएं:

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

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

मैसेज के एट्रिब्यूट ऐक्सेस करना

Pub/Sub मैसेज को पब्लिश करने के लिए दिए गए कमांड में, डेटा एट्रिब्यूट सेट करके भेजा जा सकता है. उदाहरण के लिए, 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);
});