Sie sehen sich die Dokumentation zu Apigee Edge an.
Sehen Sie sich die Apigee X-Dokumentation an. info
Version: 2.0.0
Nachrichten in einem Thema im Google Cloud Pub/Sub-Dienst veröffentlichen
Dieser Artikel 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.
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.Erstellen Sie mit der GCP Console einen Schlüssel für das Dienstkonto.
Verwenden Sie den Inhalt der resultierenden JSON-Schlüsseldatei, wenn Sie die Erweiterung mithilfe 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 gerade erst mit Cloud Pub/Sub beginnen, sehen Sie sich die Kurzanleitungen in der Cloud Pub/Sub-Dokumentation an.
Beispiele
In den folgenden Beispielen wird gezeigt, wie Sie die Unterstützung für Cloud Pub/Sub-Erweiterungsaktionen mithilfe der ExtensionCallout-Richtlinie konfigurieren.
Nachricht
In diesem Beispiel veröffentlicht die Aktion publish
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 im Thema zurück, in dem sie veröffentlicht wurde, und schreibt sie in die vom <Output>
-Tag angegebene Variable:
<?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>
In der folgenden AssignMessage-Richtlinie wird der Wert der Variablen, in der die Antwort der Erweiterung gespeichert ist, verwendet, 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 daher 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 im Thema zurück, in dem sie veröffentlicht wurde, und schreibt sie in die vom <Output>
-Tag angegebene Variable:
<?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>
In der folgenden AssignMessage-Richtlinie wird der Wert der Variablen, in der die Antwort der Erweiterung gespeichert ist, verwendet, 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 daher 165918654986954.
Aktionen
publish
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 einen 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 einfachen String verwenden oder Ihre Nachricht mit selbst erstelltem JSON strukturieren. | String oder JSON | Keine | Ja |
customAttributes | Benutzerdefinierte Attribute, die der Nachricht im Formular hinzugefügt werden sollen: "customAttributes": {"attr1": "foo", "attr2": "bar"} . |
JSON-Array | Keine | Nein |
Antwort
JSON mit der ID der Nachricht, die für das Thema veröffentlicht wurde. Beispiel:
{"messageId":"165918654986954"}
Konfigurationsreferenz
Beachten Sie die folgenden Hinweise, wenn Sie diese Erweiterung für die Verwendung in API-Proxys konfigurieren und bereitstellen.
Gängige 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 |
Properties für dieses Erweiterungspaket
Attribut | Beschreibung | Standard | Erforderlich |
---|---|---|---|
topic |
Das Thema, unter dem die Nachricht veröffentlicht werden soll. Rufen Sie diesen Wert aus dem Pub/Sub-Dienst ab, z. B. über die GCP Console für den Dienst. Der Themenname kann beispielsweise das Format projects/GCP-PROJECT-ID/topics/TOPIC-NAME haben. |
Keine. | Ja. |
credentials |
Wenn Sie diesen Wert in die Apigee Edge-Konsole eingeben, entspricht er dem Inhalt Ihrer Dienstkonto-Schlüsseldatei. Wenn er über die Verwaltungs-API gesendet wird, ist er ein Base64-codierter Wert, der aus der Dienstkonto-Schlüsseldatei generiert wird. | Keine. | Ja. |