Google क्लाउड का पब/सब एक विश्व स्तर पर वितरित संदेश बस है जो आपकी आवश्यकता के अनुसार स्वचालित रूप से मापता है। आप function.pubsub का उपयोग कर एक ऐसा 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); }
अन्य, गैर-जेएसओएन पेलोड संदेश ऑब्जेक्ट में बेस 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);
});