Google Cloud-এর Pub/Sub হল একটি
বিশ্বব্যাপী ডিস্ট্রিবিউট করা মেসেজ বাস যা আপনার প্রয়োজন অনুযায়ী অটোমেটিক স্কেল করে। আপনি
functions.pubsub ব্যবহার করে Pub/Sub ইভেন্ট ম্যানেজ করে এমন ফাংশন
তৈরি করতে পারবেন।
একটি পাব/সাব ফাংশন ট্রিগার করুন
কোনও নির্দিষ্ট বিষয়ে নতুন Pub/Sub মেসেজ পাঠানো হলে আপনি ফাংশন ট্রিগার করতে
পারবেন। আপনার ফাংশন ট্রিগার করতে চান এমন Pub/Sub টপিকের নাম আপনাকে অবশ্যই উল্লেখ করতে হবে এবং
onPublish()
ইভেন্ট হ্যান্ডলারের মধ্যে ইভেন্ট সেট করতে হবে:
exports.helloPubSub = functions.pubsub.topic('topic-name').onPublish((message) => { // ... });
প্রকাশনা/সাবস্ক্রিপশন মেসেজ পে-লোড অ্যাক্সেস করা
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;
মেসেজ অ্যাট্রিবিউট অ্যাক্সেস করুন
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);
});