Google Cloud Pub/Sub একটি বিশ্বব্যাপী বিতরণ করা বার্তা বাস যা আপনার প্রয়োজন অনুসারে স্বয়ংক্রিয়ভাবে স্কেল করে। যখনই কোনও নির্দিষ্ট বিষয়ে একটি নতুন Pub/Sub বার্তা পাঠানো হয় তখন আপনি একটি ফাংশন ট্রিগার করতে পারেন।
প্রয়োজনীয় মডিউলগুলি আমদানি করুন
শুরু করতে, Pub/Sub ইভেন্ট পরিচালনার জন্য প্রয়োজনীয় মডিউলগুলি আমদানি করুন:
নোড.জেএস
const {onMessagePublished} = require("firebase-functions/pubsub");
const logger = require("firebase-functions/logger");
পাইথন
from firebase_functions import pubsub_fn
ফাংশনটি ট্রিগার করুন
আপনার ফাংশনটি ট্রিগার করতে চাইলে আপনাকে অবশ্যই Pub/Sub টপিকের নাম উল্লেখ করতে হবে এবং ইভেন্ট হ্যান্ডলারের মধ্যে ইভেন্টটি সেট করতে হবে:
নোড.জেএস
exports.hellopubsub = onMessagePublished("topic-name", (event) => {
পাইথন
@pubsub_fn.on_message_published(topic="topic-name")
def hellopubsub(event: pubsub_fn.CloudEvent[pubsub_fn.MessagePublishedData]) -> None:
"""Log a message using data published to a Pub/Sub topic."""
পাব/সাব মেসেজ পেলোড অ্যাক্সেস করুন
আপনার ফাংশনে ফিরে আসা মেসেজ অবজেক্ট থেকে 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 = event.data.message.json.name; } catch (e) { logger.error("PubSub message was not JSON", e); }
পাইথন
# Get the `name` attribute of the PubSub message JSON body.
try:
data = event.data.message.json
except ValueError:
print("PubSub message was not JSON")
return
if data is None:
return
if "name" not in data:
print("No 'name' key")
return
name = data["name"]
অন্যান্য, নন-JSON পেলোডগুলি Pub/Sub বার্তায় base64 এনকোডেড স্ট্রিং হিসেবে বার্তা অবজেক্টে থাকে। নিচের মতো একটি বার্তা পড়তে, আপনাকে base64 এনকোডেড স্ট্রিংটি দেখানো পদ্ধতিতে ডিকোড করতে হবে:
gcloud pubsub topics publish topic-name --message 'MyMessage'
নোড.জেএস
// Decode the PubSub Message body. const message = event.data.message; const messageBody = message.data ? Buffer.from(message.data, "base64").toString() : null;
পাইথন
# Decode the PubSub message body.
message_body = base64.b64decode(event.data.message.data)
বার্তার বৈশিষ্ট্য অ্যাক্সেস করুন
Pub/Sub বার্তা পাবলিশ কমান্ডে সেট করা ডেটা অ্যাট্রিবিউট ব্যবহার করে পাঠানো যেতে পারে। উদাহরণস্বরূপ, আপনি একটি name
অ্যাট্রিবিউট ব্যবহার করে একটি বার্তা প্রকাশ করতে পারেন:
gcloud pubsub topics publish topic-name --attribute name=Xenia
আপনি বার্তা বস্তুর সংশ্লিষ্ট বৈশিষ্ট্য থেকে এই বৈশিষ্ট্যগুলি পড়তে পারেন:
নোড.জেএস
// Get the `name` attribute of the message. const name = event.data.message.attributes.name;
পাইথন
# Get the `name` attribute of the message.
if "name" not in event.data.message.attributes:
print("No 'name' attribute")
return
name = event.data.message.attributes["name"]