Google Cloud adlı kullanıcının Pub/Sub
ihtiyaç duyduğunuzda otomatik olarak ölçeklendirilen, küresel olarak dağıtılmış ileti yolu Siz
şunu kullanarak Pub/Sub etkinliklerini işleyen bir fonksiyon oluşturabilir:
functions.pubsub
Pub/Sub işlevini tetikleme
Yeni bir Pub/Sub mesajı gönderildiğinde bir işlevi tetikleyebilirsiniz
tercih edebilirsiniz. Pub/Sub konu adını belirtmeniz gerekiyor
işlevinizi tetiklemek ve etkinliği
onPublish()
etkinlik işleyici:
exports.helloPubSub = functions.pubsub.topic('topic-name').onPublish((message) => { // ... });
Pub/Sub mesaj yüküne {:#access-pub/sub} erişin
Pub/Sub mesajının yüküne şuradan erişilebilir:
Message
nesnesi döndürüldü
ekleyin. Pub/Sub mesajında JSON içeren mesajlar için
gövde, Cloud Functions için Firebase SDK'sı mesajın kodunu çözmek için yardımcı bir özelliğe sahiptir. Örneğin,
örnek olarak, basit bir JSON yüküyle yayınlanan bir mesajı görebilirsiniz:
gcloud pubsub topics publish topic-name --message '{"name":"Xenia"}'
Bunun gibi bir JSON veri yüküne şuradan erişebilirsiniz:
json
mülkü:
// 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 dışındaki diğer yükler Pub/Sub mesajında şu şekilde yer alır: mesaj nesnesinde base64 kodlamalı dizeler var. Şu gibi bir iletiyi okumak için: aşağıda gösterildiği gibi base64 kodlu dizenin kodunu çözmeniz gerekir:
gcloud pubsub topics publish topic-name --message 'MyMessage'
// Decode the PubSub Message body. const messageBody = message.data ? Buffer.from(message.data, 'base64').toString() : null;
{:#access-message} etkinliklerinin mesaj özelliklerine erişme
Pub/Sub mesajı,
publish (yayınlama) komutu. Örneğin, name
içeren bir mesaj yayınlayabilirsiniz
özellik:
gcloud pubsub topics publish topic-name --attribute name=Xenia
Bu tür özellikleri
Message.attributes
:
// Get the `name` attribute of the message. const name = message.attributes.name;
İleti kimliği veya ileti kimliği gibi bazı temel verilerin
Message.attributes
için mesaj yayınlanma zamanı yok. Geçici çözüm
bu ayrıntılara tetikleyici etkinliğin
EventContext
.
Örneğin:
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);
});