Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Sürüm: 2.0.2
Google Cloud Pub/Sub hizmetindeki bir konuda mesaj yayınlama
Bu içerik, uzantının yapılandırılması ve kullanılmasıyla ilgili referans bilgiler sağlar.
Ön koşullar
ExtensionCallout politikası kullanılarak bir API proxy'sinden uzantıyı kullanmadan önce şunları yapmanız gerekir:
Hızlı başlangıç: Konsolu kullanma başlıklı makalede açıklandığı gibi bir Cloud Pub/Sub konusu oluşturun.
Konuyu aldıktan sonra Cloud Pub/Sub konunuza yayınlama izni verin. Örneğin, konulara yayınlamak için
roles/pubsub.publisherrolü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 Google Cloud Console'u kullanın.
Yapılandırma referansını kullanarak uzantıyı eklerken ve yapılandırırken sonuçtaki 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, çoka-çok eşzamansız mesajlaşma sağlar. Cloud Pub/Sub, geliştiricilerin Google Cloud'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 hizmeti sunar.
Cloud Pub/Sub'ı kullanmaya yeni başlıyorsanız Cloud Pub/Sub belgelerindeki hızlı başlangıç kılavuzlarına göz atın.
Örnekler
Aşağıdaki örneklerde, ExtensionCallout politikası kullanılarak Cloud Pub/Sub uzantısı 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 iletiyi dize olarak yayınlar. publish işlemi, yayınlandığı konudaki yayınlanmış iletinin kimliğini döndürür ve <Output> etiketiyle 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 Assign Message politikası, yanıt yükünü 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 özelliğinde 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ınlanmış iletinin kimliğini döndürür ve <Output> etiketiyle 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 Assign Message politikası, yanıt yükünü 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 özelliğinde 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. Dize kullanabilir veya mesajınızı kendi tasarımınızla JSON olarak 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ınlanan iletinin kimliğini içeren JSON. Örneğin:
{"messageId":"165918654986954"}
Yapılandırma Referansı
Bu uzantıyı API proxy'lerinde kullanılacak şekilde yapılandırıp dağıtırken aşağıdakileri kullanın.
Sık kullanılan uzantı özellikleri
Aşağıdaki özellikler her uzantı için mevcuttur.
| Mülk | Açıklama | Varsayılan | Zorunlu |
|---|---|---|---|
name |
Uzantının bu yapılandırmasını verdiğiniz ad. | Yok | Evet |
packageName |
Apigee Edge'in sağladığı uzantı paketinin adı. | Yok | Evet |
version |
Uzantıyı yapılandırdığınız uzantı paketinin sürüm numarası. | Yok | Evet |
configuration |
Eklediğiniz uzantıya özgü yapılandırma değeri. Bu uzantı paketinin özellikleri başlıklı makaleyi inceleyin | Yok | Evet |
Bu uzantı paketinin özellikleri
| Mülk | Açıklama | Varsayılan | Zorunlu |
|---|---|---|---|
topic |
Yayınlanacak konu. Bu değeri Pub/Sub hizmetinden (ör. hizmetin Google Cloud Console'undan) 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ğidir. Yönetim API'si kullanılarak gönderildiğinde, hizmet hesabı anahtar dosyasından oluşturulan base64 kodlu bir değerdir. | Yok. | Evet. |