Pemicu Cloud Pub/Sub

Google Cloud Pub/Sub adalah bus pesan yang didistribusikan secara global dan disesuaikan secara otomatis dengan kebutuhan Anda. Anda dapat membuat fungsi yang menangani peristiwa Google Cloud Pub/Sub menggunakan functions.pubsub.

Memicu fungsi pub/sub

Anda dapat memicu fungsi saat ada pesan Pub/Sub baru yang dikirim ke topik tertentu. Anda harus menentukan nama topik Pub/Sub yang diinginkan untuk memicu fungsi dan menetapkan peristiwa dalam pengendali peristiwa onPublish():

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

Mengakses payload pesan pub/sub

Payload untuk pesan Pub/Sub dapat diakses dari objek Message yang ditampilkan pada fungsi Anda. Untuk pesan dengan JSON dalam isi pesan Pub/Sub, Firebase SDK untuk Cloud Functions memiliki properti helper untuk mendekode pesan tersebut. Berikut adalah contoh pesan yang dipublikasikan dengan payload JSON sederhana:

gcloud pubsub topics publish topic-name --message '{"name":"Xenia"}'

Anda dapat mengakses payload data JSON seperti ini melalui properti json:

  // Get the `name` attribute of the PubSub message JSON body.
  let name = null;
  try {
    name = message.json.name;
  } catch (e) {
    console.error('PubSub message was not JSON', e);
  }

Payload lainnya yang bukan JSON terdapat dalam pesan Pub/Sub sebagai string berenkode base64 di objek pesan. Untuk membaca pesan berikut, Anda harus mendekode string berenkode base64 seperti yang ditunjukkan di bawah ini:

gcloud pubsub topics publish topic-name --message 'MyMessage'

// Decode the PubSub Message body.
const messageBody = message.data ? Buffer.from(message.data, 'base64').toString() : null;

Mengakses atribut pesan

Pesan Pub/Sub dapat dikirim dengan atribut data yang disetel di perintah publish. Misalnya, Anda bisa memublikasikan pesan dengan atribut name:

gcloud pubsub topics publish topic-name --attribute name=Xenia

Anda dapat membaca atribut tersebut dari Message.attributes:

// Get the `name` attribute of the message.
const name = message.attributes.name;

Anda mungkin menyadari bahwa beberapa data dasar, seperti ID pesan atau waktu publikasi pesan, tidak tersedia di Message.attributes. Untuk mengatasi hal ini, Anda dapat mengakses context.eventId dan context.timestamp dari peristiwa yang memicu, yang dapat Anda gunakan untuk menentukan kapan pesan dipublikasikan dan membedakan satu pesan dari pesan lainnya. Contoh:

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

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.