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"}'
You can access a JSON data payload like this via the json property:
// 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 message can be sent with data attributes set in the publish command. For example, you could publish a message with a name attribute:
gcloud pubsub topics publish topic-name --attribute name=Xenia
You can read such attributes from 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);
});