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