Google Cloud Pub/Sub-Erweiterung

Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu Apigee X.
info

Version: 1.3.0

Nachrichten in einem Thema im Google Cloud Pub/Sub-Dienst veröffentlichen.

Dieser Inhalt enthält eine Referenz zum Konfigurieren und Verwenden dieser Erweiterung.

Vorbereitung

Bevor Sie die Erweiterung über einen API-Proxy mit der ExtensionCallout-Richtlinie verwenden, müssen Sie Folgendes tun:

  1. Erstellen Sie ein Cloud Pub/Sub-Thema, wie unter Kurzanleitung: Konsole verwenden beschrieben.

  2. Nachdem Sie das Thema erstellt haben, gewähren Sie die Berechtigung, in Ihrem Cloud Pub/Sub-Thema zu veröffentlichen. Sie können beispielsweise mit der Rolle roles/pubsub.publisher in Themen veröffentlichen. Weitere Informationen zu Cloud Pub/Sub-Rollen finden Sie unter Zugriffssteuerung.

  3. Generieren Sie in der GCP Console einen Schlüssel für das Dienstkonto.

  4. Verwenden Sie den Inhalt der resultierenden JSON-Schlüsseldatei, wenn Sie die Erweiterung mit der Konfigurationsreferenz hinzufügen und konfigurieren.

Informationen zu Cloud Pub/Sub

Cloud Pub/Sub bietet asynchrones m:n-Messaging, das Absender und Empfänger entkoppelt. Cloud Pub/Sub ist ein beständiger Nachrichtendienst mit niedriger Latenz, der es Entwicklern ermöglicht, auf der Google Cloud Platform oder extern gehostete Systeme schnell zu integrieren.

Wenn Sie Cloud Pub/Sub gerade erst kennenlernen, sehen Sie sich die Kurzanleitungen in der Cloud Pub/Sub-Dokumentation an.

Beispiele

Die folgenden Beispiele veranschaulichen, wie Sie die Unterstützung für Cloud Pub/Sub-Erweiterungsaktionen mit der ExtensionCallout-Richtlinie konfigurieren.

Textnachricht

In diesem Beispiel veröffentlicht die publish Aktion eine Nachricht als einfachen String in einem Thema, das in der Konfiguration der Erweiterung angegeben ist. Die Aktion publish gibt die ID der veröffentlichten Nachricht in dem Thema zurück, in dem sie veröffentlicht wurde, und schreibt sie in die Variable, die durch das Tag <Output> angegeben wird:

<?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>

Die folgende Assign Message-Richtlinie verwendet den Wert der Variablen, in der die Antwort der Erweiterung gespeichert ist, um die Antwortnutzlast zuzuweisen. Die Nachrichten-ID wird in der Property messageId der Ausgabevariablen gespeichert:

<?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>

Die Antwortdaten werden als JSON zurückgegeben:

{"messageId":"165918654986954"}

Daher ist der Wert von topic.message.messageId 165918654986954.

JSON-Nachricht

In diesem Beispiel veröffentlicht die publish Aktion eine Nachricht als JSON in einem Thema, das in der Konfiguration der Erweiterung angegeben ist. Die Aktion publish gibt die ID der veröffentlichten Nachricht in dem Thema zurück, in dem sie veröffentlicht wurde, und schreibt sie in die Variable, die durch das Tag <Output> angegeben wird:

<?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>

Die folgende Assign Message-Richtlinie verwendet den Wert der Variablen, in der die Antwort der Erweiterung gespeichert ist, um die Antwortnutzlast zuzuweisen. Die Nachrichten-ID wird in der Property messageId der Ausgabevariablen gespeichert:

<?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>

Die Antwortdaten werden als JSON zurückgegeben:

{"messageId":"165918654986954"}

Daher ist der Wert von topic.message.messageId 165918654986954.

Aktionen

Veröffentlichen

Veröffentlicht eine Nachricht in dem Thema, das in der Konfiguration dieser Erweiterung angegeben ist.

Syntax

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

String-Beispiel

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

Beispiel für strukturierte JSON-Daten

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

Beispiel für benutzerdefinierte Attribute

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" },
      "customAttributes": {"attr1": "foo", "attr2": "bar"}
  }
]]></Input>

Anfrageparameter

Parameter Beschreibung Typ Standard Erforderlich
Nachricht Die zu veröffentlichende Nachricht. Sie können einen einfachen String verwenden oder Ihre Nachricht mit JSON nach Ihren eigenen Vorstellungen strukturieren. String oder JSON Keine Ja
customAttributes

Benutzerdefinierte Attribute, die der Nachricht im folgenden Format hinzugefügt werden sollen:

"customAttributes": {"attr1": "foo", "attr2": "bar"}.
JSON-Array Keine Nein

Antwort

JSON mit der ID der Nachricht, wie sie im Thema veröffentlicht wurde. Beispiel:

{"messageId":"165918654986954"}

Konfigurationsreferenz

Verwenden Sie die folgenden Informationen, wenn Sie diese Erweiterung für die Verwendung in API-Proxys konfigurieren und bereitstellen.

Allgemeine Erweiterungseigenschaften

Für jede Erweiterung sind die folgenden Eigenschaften vorhanden.

Attribut Beschreibung Standard Erforderlich
name Der Name, den Sie dieser Konfiguration der Erweiterung zuweisen. Ja
packageName Name des Erweiterungspakets, wie von Apigee Edge angegeben. Ja
version Versionsnummer für das Erweiterungspaket, von dem Sie eine Erweiterung konfigurieren. Ja
configuration Konfigurationswert speziell für die Erweiterung, die Sie hinzufügen. Weitere Informationen finden Sie unter Eigenschaften für dieses Erweiterungspaket. Ja

Eigenschaften für dieses Erweiterungspaket

Attribut Beschreibung Standard Erforderlich
topic Das Thema, in dem veröffentlicht werden soll. Rufen Sie diesen Wert aus dem Pub/Sub-Dienst ab, z. B. aus der GCP Console für den Dienst. Der Themenname kann beispielsweise das Format projects/GCP-PROJECT-ID/topics/TOPIC-NAME haben. Keine. Ja.
credentials Wenn in der Apigee Edge Console eingegeben, ist dies der Inhalt Ihrer Dienstkonto-Schlüsseldatei. Wenn über die Management API gesendet, ist es ein base64-codierter Wert, der aus der Dienstkonto-Schlüsseldatei generiert wurde. Keine. Ja.