পাব/সাব ট্রিগার (1ম প্রজন্ম)

Google Cloud Pub/Sub একটি বিশ্বব্যাপী বিতরণ করা বার্তা বাস যা আপনার প্রয়োজন অনুসারে স্বয়ংক্রিয়ভাবে স্কেল করে। আপনি functions.pubsub ব্যবহার করে একটি ফাংশন তৈরি করতে পারেন যা Pub/Sub ইভেন্টগুলি পরিচালনা করে।

একটি পাব/সাব ফাংশন ট্রিগার করুন

যখনই কোনও নির্দিষ্ট বিষয়ে একটি নতুন Pub/Sub বার্তা পাঠানো হয়, তখন আপনি একটি ফাংশন ট্রিগার করতে পারেন। আপনার ফাংশনটি ট্রিগার করতে চান এমন Pub/Sub টপিকের নামটি অবশ্যই উল্লেখ করতে হবে এবং onPublish() ইভেন্ট হ্যান্ডলারের মধ্যে ইভেন্টটি সেট করতে হবে:

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

পাব/সাব মেসেজ পেলোড অ্যাক্সেস করুন

আপনার ফাংশনে ফিরে আসা Message অবজেক্ট থেকে Pub/Sub মেসেজের পেলোড অ্যাক্সেসযোগ্য। Pub/Sub মেসেজের বডিতে JSON সহ বার্তাগুলির জন্য, Firebase SDK for 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);
});