পাব/সাব ট্রিগার (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 মেসেজের মেসেজ অবজেক্টে বেস৬৪ এনকোডেড স্ট্রিং হিসেবে থাকে। নিচের মতো একটি মেসেজ পড়ার জন্য, আপনাকে অবশ্যই দেখানো অনুযায়ী বেস৬৪ এনকোডেড স্ট্রিংটি ডিকোড করতে হবে:

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