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


Pub/Sub của Google Cloud là 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 mỗi khi có 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 của 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 những thông báo có JSON trong thông báo Pub/Sub nội dung, SDK Firebase cho Cloud Functions có thuộc tính trợ giúp để giải mã thông báo. Cho 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}

Bạn có thể gửi Pub/Sub tin nhắn với 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);
});