Pub/Sub tetikleyicileri


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