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