Điều kiện kích hoạt Pub/Sub


Pub/Sub của Google Cloud là một bus thông báo được phân phối trên toàn cầu sẽ tự động điều chỉnh quy mô khi bạn cần. Bạn có thể tạo một hàm xử lý các sự kiện Pub/Sub bằng cách sử dụng functions.pubsub.

Kích hoạt hàm pub/sub

Bạn có thể kích hoạt một hàm bất cứ khi nào thông báo Pub/Sub mới được gửi vào một chủ đề cụ thể. Bạn phải chỉ định tên chủ đề Pub/Sub bạn muốn kích hoạt hàm của mình và đặt sự kiện trong onPublish() trình xử lý sự kiện:

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

Truy cập vào tải trọng thông báo nhà xuất bản/sub {:#access-pub/sub}

Tải trọng cho thông báo Pub/Sub có thể truy cập được từ Trả về đối tượng Message vào hàm của bạn. Đối với tin nhắn có JSON trong thông báo Pub/Sub nội dung, Firebase SDK for Cloud Functions có một thuộc tính trợ giúp để giải mã thông báo. Để ví dụ: đây là một thông báo được xuất bản có tải trọng JSON đơn giản:

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

Bạn có thể truy cập tải trọng dữ liệu JSON như thế này qua Thuộc tính 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);
  }

Các tải trọng khác không phải JSON có trong thông báo Pub/Sub dưới dạng chuỗi mã hoá base64 trong đối tượng thông báo. Để đọc thư như sau đây, bạn phải giải mã chuỗi được mã hoá base64 như sau:

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

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

Truy cập vào các thuộc tính của thông báo {:#access-message}

Tin nhắn Pub/Sub có thể được gửi với các thuộc tính dữ liệu được thiết lập trong lệnh xuất bản. Ví dụ: bạn có thể xuất bản một thông báo bằng name thuộc tính:

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

Bạn có thể đọc các thuộc tính này trong Message.attributes:

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

Bạn có thể nhận thấy rằng một số dữ liệu cơ bản như mã nhận dạng thư hoặc không có thông báo về thời gian xuất bản thông báo ở Message.attributes. Để giải quyết vấn đề điều này, bạn có thể truy cập các chi tiết này trong EventContext. Ví dụ:

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