Pub/Sub ट्रिगर


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

pub/sub फ़ंक्शन को ट्रिगर करना

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

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

pub/sub मैसेज पेलोड {:#access-pub/sub}

Pub/Sub मैसेज के पेलोड को यहां से ऐक्सेस किया जा सकता है: Message ऑब्जेक्ट दिखाया गया को भी लागू किया जा सकता है. Pub/Sub मैसेज में JSON वाले मैसेज मुख्य हिस्से में, Cloud Functions के लिए 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 पेलोड 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;

मैसेज के एट्रिब्यूट {:#access-message}

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