Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info
Sürüm: 1.5.1
Google Cloud Pub/Sub hizmetinde bir konuya mesaj yayınlayın.
Bu içerikte, bu uzantıyı yapılandırma ve kullanmayla ilgili referanslar sağlanmaktadır.
Ön koşullar
ExtensionCallout politikasını kullanarak uzantıyı bir API proxy'sinden kullanmadan önce şunları yapmanız gerekir:
Hızlı başlangıç: Console'u kullanma bölümünde açıklandığı gibi bir Cloud Pub/Sub konusu oluşturun.
Konuyu oluşturduktan sonra Cloud Pub/Sub konunuza yayın yapma izni verin. Örneğin, konulara içerik yayınlamak için
roles/pubsub.publisher
rolünü kullanabilirsiniz. Cloud Pub/Sub rolleri hakkında daha fazla bilgi için Erişim Denetimi başlıklı makaleyi inceleyin.Hizmet hesabı için anahtar oluşturmak üzere GCP Console'u kullanın.
Yapılandırma referansını kullanarak uzantıyı ekleyip yapılandırırken elde edilen anahtar JSON dosyasının içeriğini kullanın.
Cloud Pub/Sub hakkında
Cloud Pub/Sub, gönderenleri ve alıcıları birbirinden ayıran çoklu-çoklu, eşzamansız mesajlaşma sağlar. Cloud Pub/Sub, geliştiricilerin Google Cloud Platform'da ve harici olarak barındırılan sistemleri hızlı bir şekilde entegre etmesine yardımcı olan düşük gecikmeli ve dayanıklı mesajlaşma sağlar.
Cloud Pub/Sub'u kullanmaya yeni başladıysanız Cloud Pub/Sub dokümanlarında yer alan hızlı başlangıç kılavuzlarına göz atın.
Örnekler
Aşağıdaki örneklerde, ExtensionCallout politikası kullanılarak Cloud Pub/Sub uzantı işlemleri için desteğin nasıl yapılandırılacağı gösterilmektedir.
Kısa mesaj
Bu örnekte publish
işlemi, uzantının yapılandırmasında belirtilen bir konuya basit bir dize olarak bir mesaj yayınlar. publish
işlemi, yayınlandığı konudaki yayınlanan mesajın kimliğini döndürür ve <Output>
etiketi tarafından belirtilen değişkene yazar:
<?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>
Aşağıdaki Mesaj Ata politikası, yanıt yükü atamak için uzantının yanıtını depolayan değişkenin değerini kullanır. İleti kimliği, çıkış değişkeninin messageId
mülkünde saklanır:
<?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>
Yanıt verileri JSON olarak döndürülür:
{"messageId":"165918654986954"}
Bu nedenle, topic.message.messageId
değeri 165918654986954'tür.
JSON mesajı
Bu örnekte publish
işlemi, uzantının yapılandırmasında belirtilen bir konuya JSON olarak bir mesaj yayınlar. publish
işlemi, yayınlandığı konudaki yayınlanan mesajın kimliğini döndürür ve <Output>
etiketi tarafından belirtilen değişkene yazar:
<?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>
Aşağıdaki Mesaj Ata politikası, yanıt yükü atamak için uzantının yanıtını depolayan değişkenin değerini kullanır. İleti kimliği, çıkış değişkeninin messageId
mülkünde saklanır:
<?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>
Yanıt verileri JSON olarak döndürülür:
{"messageId":"165918654986954"}
Bu nedenle, topic.message.messageId
değeri 165918654986954'tür.
İşlemler
yayınla
Bu uzantının yapılandırmasında belirtilen konuda bir mesaj yayınlar.
Söz dizimi
<Action>publish</Action>
<Input><![CDATA[{
"message" : "message-to-publish" | JSON-structured-data,
"customAttributes": JSON-array
}]]></Input>
Dize Örneği
<Action>publish</Action>
<Input><![CDATA[
{
"message" : "My test message."
}
]]></Input>
JSON Yapılandırılmış Veri Örneği
<Action>publish</Action>
<Input><![CDATA[
{
"message" : { "info" : "My test message" }
}
]]></Input>
Özel Özellikler Örneği
<Action>publish</Action>
<Input><![CDATA[
{
"message" : { "info" : "My test message" },
"customAttributes": {"attr1": "foo", "attr2": "bar"}
}
]]></Input>
İstek parametreleri
Parametre | Açıklama | Tür | Varsayılan | Zorunlu |
---|---|---|---|---|
mesaj | Yayınlanacak mesaj. Basit bir dize kullanabilir veya mesajınızı kendi tasarımınıza göre JSON ile yapılandırabilirsiniz. | Dize veya JSON | Yok | Evet |
customAttributes | Formdaki mesaja eklenecek özel özellikler: "customAttributes": {"attr1": "foo", "attr2": "bar"} . |
JSON dizisi | Yok | Hayır |
Yanıt
Konuya yayınlandığı şekliyle ileti kimliğini içeren JSON. Örneğin:
{"messageId":"165918654986954"}
Yapılandırma Referansı
Bu uzantıyı API proxy'lerinde kullanılmak üzere yapılandırırken ve dağıtırken aşağıdakileri kullanın.
Ortak uzantı özellikleri
The following properties are present for every extension.
Property | Description | Default | Required |
---|---|---|---|
name |
Name you're giving this configuration of the extension. | None | Yes |
packageName |
Name of the extension package as given by Apigee Edge. | None | Yes |
version |
Version number for the extension package from which you're configuring an extension. | None | Yes |
configuration |
Configuration value specific to the extension you're adding. See Properties for this extension package | None | Yes |
Bu uzantı paketine ait özellikler
Mülk | Açıklama | Varsayılan | Zorunlu |
---|---|---|---|
topic |
Yayınlanacak konu. Bu değeri Pub/Sub hizmetinden (ör. hizmetin GCP konsolundan) alın. Örneğin, konu adı projects/GCP-PROJECT-ID/topics/TOPIC-NAME biçiminde olabilir. |
Yok. | Evet. |
credentials |
Apigee Edge konsoluna girildiğinde bu, hizmet hesabı anahtar dosyanızın içeriği olur. Yönetim API'si üzerinden gönderildiğinde, hizmet hesabı anahtar dosyasından oluşturulan base64 kodlu bir değerdir. | Yok. | Evet. |