Sie lesen gerade die Dokumentation zu Apigee Edge.
Apigee X-Dokumentation aufrufen info
Version: 2.0.2
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 können, müssen Sie Folgendes tun:
Erstellen Sie ein Cloud Pub/Sub-Thema, wie unter Kurzanleitung: Console verwenden beschrieben.
Wenn Sie das Thema haben, gewähren Sie die Berechtigung, in Ihrem Cloud Pub/Sub-Thema zu veröffentlichen. Sie können beispielsweise mit der Rolle
roles/pubsub.publisherin Themen veröffentlichen. Weitere Informationen zu Cloud Pub/Sub-Rollen finden Sie unter Zugriffssteuerung.Mit der Google Cloud Console einen Schlüssel für das Dienstkonto generieren
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 Entwicklern die schnelle Integration von in Google Cloud oder extern gehosteten Systemen ermöglicht.
Wenn Sie Cloud Pub/Sub noch nicht kennen, lesen Sie die Kurzanleitungen in der Cloud Pub/Sub-Dokumentation.
Beispiele
Die folgenden Beispiele veranschaulichen, wie Sie die Unterstützung für Cloud Pub/Sub-Erweiterungsaktionen mit der ExtensionCallout-Richtlinie konfigurieren.
Nachricht
In diesem Beispiel wird mit der Aktion publish eine Nachricht als String in einem Thema veröffentlicht, 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 Eigenschaft 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"}
Der Wert von topic.message.messageId ist also 165918654986954.
JSON-Nachricht
In diesem Beispiel wird mit der publish-Aktion eine Nachricht als JSON in einem Thema veröffentlicht, 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 Eigenschaft 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"}
Der Wert von topic.message.messageId ist also 165918654986954.
Aktionen
Veröffentlichen
Veröffentlicht eine Nachricht im 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>
Beispiel für String
<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 String verwenden oder Ihre Nachricht mit JSON strukturieren. | String oder JSON | Keine | Ja |
| customAttributes | Benutzerdefinierte Attribute, die der Nachricht hinzugefügt werden sollen, im folgenden Format: "customAttributes": {"attr1": "foo", "attr2": "bar"}. |
JSON-Array | Keine | Nein |
Antwort
JSON mit der ID der Nachricht, die 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 über den Pub/Sub-Dienst ab, z. B. über die Google Cloud Console für den Dienst. Der Themenname könnte beispielsweise das Format projects/GCP-PROJECT-ID/topics/TOPIC-NAME haben. |
Keine. | Ja. |
credentials |
Wenn Sie diesen Wert in der Apigee Edge-Konsole eingeben, ist das der Inhalt Ihrer Dienstkonto-Schlüsseldatei. Wenn er über die Management API gesendet wird, ist er ein base64-codierter Wert, der aus der Dienstkonto-Schlüsseldatei generiert wird. | Keine. | Ja. |