Ekstensi Google Cloud Pub/Sub

Anda sedang melihat dokumentasi Apigee Edge.
Buka Dokumentasi Apigee X.
info

Versi: 1.2.1

Memublikasikan pesan ke topik di layanan Google Cloud Pub/Sub.

Konten ini menyediakan referensi untuk mengonfigurasi dan menggunakan ekstensi ini.

Prasyarat

Sebelum menggunakan ekstensi dari proxy API menggunakan kebijakan Extensionscallout, Anda harus:

  1. Buat topik Cloud Pub/Sub, seperti yang dijelaskan di Panduan memulai: Menggunakan konsol.

  2. Setelah memiliki topik, berikan izin untuk memublikasikan topik ke topik Cloud Pub/Sub. Misalnya, Anda dapat menggunakan peran roles/pubsub.publisher untuk memublikasikan ke topik. Untuk mengetahui informasi selengkapnya tentang peran Cloud Pub/Sub, lihat Kontrol Akses.

  3. Gunakan GCP Console untuk membuat kunci untuk akun layanan.

  4. Gunakan konten file JSON utama yang dihasilkan saat menambahkan dan mengonfigurasi ekstensi menggunakan referensi konfigurasi.

Tentang Cloud Pub/Sub

Cloud Pub/Sub menyediakan pesan asinkron many-to-many yang memisahkan pengirim dan penerima. Cloud Pub/Sub memberikan pesan berlatensi rendah dan tahan lama yang membantu developer mengintegrasikan sistem yang dihosting di Google Cloud Platform dan secara eksternal dengan cepat.

Jika Anda baru mulai menggunakan Cloud Pub/Sub, lihat panduan memulai dalam dokumentasi Cloud Pub/Sub.

Contoh

Contoh berikut menggambarkan cara mengonfigurasi dukungan untuk tindakan ekstensi Cloud Pub/Sub menggunakan kebijakan Extensioncallout.

SMS

Dalam contoh ini, tindakan publish memublikasikan pesan sebagai string sederhana ke topik yang ditentukan dalam konfigurasi ekstensi. Tindakan publish menampilkan ID pesan yang dipublikasikan dalam topik tempat pesan dipublikasikan dan menulisnya ke variabel yang ditentukan oleh tag <Output>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
    <DisplayName>Publish Message</DisplayName>
    <Connector>cloud-pub-sub-extension-example</Connector>
    <Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : "My test message."
      }
    ]]></Input>
    <Output>topic.message</Output>
</ConnectorCallout>

Kebijakan Tetapkan Pesan berikut menggunakan nilai variabel yang menyimpan respons ekstensi untuk menetapkan payload respons. ID pesan disimpan di properti messageId variabel output:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
    <DisplayName>Get Topic Message ID</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{topic.message.messageId}</Payload>
    </Set>
</AssignMessage>

Data respons ditampilkan sebagai JSON:

{"messageId":"165918654986954"}

Oleh karena itu, nilai topic.message.messageId adalah 165918654986954.

Pesan JSON

Dalam contoh ini, tindakan publish memublikasikan pesan sebagai JSON ke topik yang ditentukan dalam konfigurasi ekstensi. Tindakan publish menampilkan ID pesan yang dipublikasikan dalam topik tempat pesan dipublikasikan dan menulisnya ke variabel yang ditentukan oleh tag <Output>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
    <DisplayName>Publish Message</DisplayName>
    <Connector>cloud-pub-sub-extension-example</Connector>
    <Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : { "info" : "My test message" }
      }
    ]]></Input>
    <Output>topic.message</Output>
</ConnectorCallout>

Kebijakan Tetapkan Pesan berikut menggunakan nilai variabel yang menyimpan respons ekstensi untuk menetapkan payload respons. ID pesan disimpan di properti messageId variabel output:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
    <DisplayName>Get Topic Message ID</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{topic.message.messageId}</Payload>
    </Set>
</AssignMessage>

Data respons ditampilkan sebagai JSON:

{"messageId":"165918654986954"}

Oleh karena itu, nilai topic.message.messageId adalah 165918654986954.

Tindakan

publish

Memublikasikan pesan ke topik yang ditentukan dalam konfigurasi ekstensi ini.

Sintaksis

<Action>publish</Action>
<Input><![CDATA[{
  "message" : "message-to-publish" | JSON-structured-data
}]]></Input>

Contoh String

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : "My test message."
  }
]]></Input>

Contoh JSON

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" }
  }
]]></Input>

Parameter permintaan

Parameter Deskripsi Jenis Default Wajib
pesan Pesan yang akan dipublikasikan. Anda dapat menggunakan string sederhana atau menyusun pesan dengan JSON desain Anda sendiri. String atau JSON Tidak ada. Ya.

Respons

JSON yang berisi ID pesan seperti yang dipublikasikan ke topik. Contoh:

{"messageId":"165918654986954"}

Referensi Konfigurasi

Gunakan hal berikut saat Anda mengonfigurasi dan men-deploy ekstensi ini untuk digunakan di proxy API.

Properti ekstensi umum

Properti berikut ada untuk setiap ekstensi.

Properti Deskripsi Default Wajib
name Nama yang Anda berikan pada konfigurasi ekstensi ini. Tidak ada Ya
packageName Nama paket ekstensi seperti yang diberikan oleh Apigee Edge. Tidak ada Ya
version Nomor versi untuk paket ekstensi tempat Anda mengonfigurasi ekstensi. Tidak ada Ya
configuration Nilai konfigurasi khusus untuk ekstensi yang Anda tambahkan. Lihat Properti untuk paket ekstensi ini Tidak ada Ya

Properti untuk paket ekstensi ini

Properti Deskripsi Default Wajib
topic Topik yang akan dipublikasikan. Dapatkan nilai ini dari layanan Pub/Sub, seperti dari konsol GCP untuk layanan. Misalnya, nama topik dapat berupa projects/GCP-PROJECT-ID/topics/TOPIC-NAME Tidak ada. Ya.
credentials Saat dimasukkan di konsol Apigee Edge, ini adalah isi file kunci akun layanan Anda. Saat dikirim melalui Management API, ini adalah nilai berenkode base64 yang dihasilkan dari file kunci akun layanan. Tidak ada. Ya.