Anda sedang melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Versi: 2.0.2
Memublikasikan pesan ke topik di layanan Google Cloud Pub/Sub.
Konten ini memberikan referensi untuk mengonfigurasi dan menggunakan ekstensi ini.
Prasyarat
Sebelum menggunakan ekstensi dari proxy API menggunakan kebijakan ExtensionCallout, Anda harus:
Buat topik Cloud Pub/Sub, seperti yang dijelaskan dalam Panduan memulai: Menggunakan konsol.
Setelah memiliki topik, berikan izin untuk memublikasikan ke topik Cloud Pub/Sub Anda. Misalnya, Anda dapat menggunakan peran
roles/pubsub.publisheruntuk memublikasikan ke topik. Untuk mengetahui informasi selengkapnya tentang peran Cloud Pub/Sub, lihat Kontrol Akses.Gunakan Konsol Google Cloud untuk membuat kunci bagi akun layanan.
Gunakan konten file JSON kunci 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 dan infrastruktur 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 ke topik yang ditentukan dalam konfigurasi ekstensi. Tindakan publish menampilkan ID pesan yang dipublikasikan di topik tempat pesan tersebut dipublikasikan dan menuliskannya 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 dalam properti messageId dari 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 di topik tempat pesan tersebut dipublikasikan dan menuliskannya 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 dalam properti messageId dari 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
publikasikan
Memublikasikan pesan ke topik yang ditentukan dalam konfigurasi ekstensi ini.
Sintaksis
<Action>publish</Action>
<Input><![CDATA[{
"message" : "message-to-publish" | JSON-structured-data,
"customAttributes": JSON-array
}]]></Input>
Contoh String
<Action>publish</Action>
<Input><![CDATA[
{
"message" : "My test message."
}
]]></Input>
Contoh Data Terstruktur JSON
<Action>publish</Action>
<Input><![CDATA[
{
"message" : { "info" : "My test message" }
}
]]></Input>
Contoh Atribut Khusus
<Action>publish</Action>
<Input><![CDATA[
{
"message" : { "info" : "My test message" },
"customAttributes": {"attr1": "foo", "attr2": "bar"}
}
]]></Input>
Parameter permintaan
| Parameter | Deskripsi | Jenis | Default | Wajib |
|---|---|---|---|---|
| pesan | Pesan yang akan dipublikasikan. Anda dapat menggunakan string atau menyusun pesan dengan JSON desain Anda sendiri. | String atau JSON | Tidak ada | Ya |
| customAttributes | Atribut kustom yang akan ditambahkan ke pesan dalam formulir: "customAttributes": {"attr1": "foo", "attr2": "bar"}. |
Array JSON | Tidak ada | Tidak |
Respons
JSON yang berisi ID pesan 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 Google Cloud untuk layanan tersebut. Misalnya, nama topik dapat berbentuk projects/GCP-PROJECT-ID/topics/TOPIC-NAME |
Tidak ada. | Ya. |
credentials |
Jika dimasukkan di konsol Apigee Edge, ini adalah konten file kunci akun layanan Anda. Saat dikirim menggunakan Management API, nilai ini adalah nilai yang dienkode base64 yang dihasilkan dari file kunci akun layanan. | Tidak ada. | Ya. |