Google Cloud Pub/Sub Uzantısı

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Sürüm: 1.2.1

Google Cloud Pub/Sub hizmetindeki bir konuda mesaj yayınlayın.

Bu içerik, bu uzantının yapılandırılması ve kullanılması için referans sağlamaktadır.

Ön koşullar

ExtensionCall politikası ile uzantıyı bir API proxy'sinden kullanmadan önce şunları yapmanız gerekir:

  1. Hızlı başlangıç kılavuzu: Konsolu kullanma bölümünde açıklandığı şekilde bir Cloud Pub/Sub konusu oluşturun.

  2. Konuyu belirledikten sonra, Cloud Pub/Sub konunuzda yayınlamak için izin verin. Örneğin, konularda 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 bölümünü inceleyin.

  3. GCP Console'u kullanarak hizmet hesabı için bir anahtar oluşturun.

  4. Yapılandırma referansını kullanarak uzantıyı eklerken ve yapılandırırken sonuçta ortaya çıkan anahtar JSON dosyasının içeriğini kullanın.

Cloud Pub/Sub hakkında

Cloud Pub/Sub, gönderenleri ve alıcıları ayıran çoka-çok, 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 uzun ömürlü mesajlaşma olanağı 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, ExtensionDescription 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 dize olarak bir mesaj yayınlar. publish işlemi, yayınlandığı konuda yayınlanan mesajın kimliğini döndürür ve bunu <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 İleti Ata politikası, yanıt yükünü atamak için uzantının yanıtını saklayan değişkenin değerini kullanır. İleti kimliği, çıkış değişkeninin messageId özelliğinde depolanı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"}

Dolayısıyla, topic.message.messageId değeri 165918654986954'tür.

JSON mesajı

Bu örnekte, publish işlemi, uzantının yapılandırmasında belirtilen konuya JSON olarak bir mesaj yayınlar. publish işlemi, yayınlandığı konuda yayınlanan mesajın kimliğini döndürür ve bunu <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 İleti Ata politikası, yanıt yükünü atamak için uzantının yanıtını saklayan değişkenin değerini kullanır. İleti kimliği, çıkış değişkeninin messageId özelliğinde depolanı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"}

Dolayısıyla, topic.message.messageId değeri 165918654986954'tür.

İşlemler

yayınla

Bu uzantının yapılandırmasında belirtilen konuya bir mesaj yayınlar.

Söz dizimi

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

Dize Örneği

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

JSON Örneği

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" }
  }
]]></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ızın JSON'uyla yapılandırabilirsiniz. Dize veya JSON Yok. Evet.

Yanıt

Konuda yayınlanan mesajın kimliğini içeren JSON. Örneğin:

{"messageId":"165918654986954"}

Yapılandırma Referansı

Bu uzantıyı API proxy'lerinde kullanmak üzere 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

Özellik Açıklama Varsayılan Zorunlu
topic Yayınlanacak konu. Bu değeri Pub/Sub hizmetinden (ör. hizmet için 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 hizmet hesabı anahtar dosyanızın içeriği bu şekildedir. Management API aracılığıyla gönderildiğinde, hizmet hesabı anahtar dosyasından oluşturulan base64 kodlu bir değerdir. Yok. Evet.