Catch up on everthing we announced at this year's Firebase Summit. Learn more

טריגרים של פאב / משנה

הענן של Google Pub / Sub אוטובוס הודעה מופץ ברחבי העולם, שיכולותיו אוטומטי כמו שאתה צריך את זה. אתה יכול ליצור פונקציה שמטפלת Pub / Sub אירועים באמצעות functions.pubsub .

הפעלת פונקציה של פאב/משנה

אתה יכול להפעיל פונקציה בכל פעם שנשלחת הודעת פאב/משנה חדשה לנושא ספציפי. אתה חייב לציין את בר / תת נושא השם שברצונך להפעיל פונקציה שלך, ולהגדיר את האירוע בתוך onPublish() מטפל באירועים:

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

גש למטען ההודעות של פאב/תת

הלווין עבור ההודעה Pub / Sub נגיש מחדר Message חפץ חזר לתפקוד שלך. עבור הודעות עם JSON בגוף ההודעות Pub/Sub, ל- 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;

גישה לתכונות הודעה

ניתן לשלוח הודעת פאב/משנה עם תכונות נתונים שהוגדרו בפקודת הפרסום. לדוגמה, אתה יכול לפרסם הודעה עם 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 . כדי לעקוף בעיה זו, אתה יכול לגשת אירוע מפעיל context.eventId ו context.timestamp , שבה ניתן לקבוע מתי כול הודעה פורסמה ולבדל הודעה אחת מרעותה. לדוגמה:

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