Rozszerzenie Google Cloud Pub/Sub

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Wersja: 1.5.1

Publikowanie wiadomości w określonym temacie w usłudze Google Cloud Pub/Sub.

Ta treść zawiera informacje na temat konfigurowania tego rozszerzenia i korzystania z niego.

Wymagania wstępne

Zanim użyjesz zasady ExtensionCallout, musisz użyć rozszerzenia z serwera proxy interfejsu API:

  1. Utwórz temat Cloud Pub/Sub zgodnie z opisem w krótkim wprowadzeniu do korzystania z konsoli.

  2. Gdy już będziesz mieć temat, przyznaj uprawnienia do publikowania w temacie Cloud Pub/Sub. Możesz na przykład użyć roli roles/pubsub.publisher, aby publikować w tematach. Więcej informacji o rolach w Cloud Pub/Sub znajdziesz w artykule Kontrola dostępu.

  3. Wygeneruj klucz konta usługi w konsoli GCP.

  4. Podczas dodawania i konfigurowania rozszerzenia przy użyciu dokumentu dotyczącego konfiguracji użyj zawartości powstałego klucza pliku JSON.

Informacje o Cloud Pub/Sub

Cloud Pub/Sub zapewnia asynchroniczne przesyłanie wiadomości typu wiele do wielu, które oddziela nadawców i odbiorców. Cloud Pub/Sub umożliwia przesyłanie wiadomości o małych opóźnieniach i trwałości, które pomagają programistom szybko integrować systemy hostowane w Google Cloud Platform i poza nią.

Jeśli dopiero zaczynasz korzystać z Cloud Pub/Sub, zapoznaj się z krótkimi wstępami w dokumentacji Cloud Pub/Sub.

Sample

Przykłady poniżej pokazują, jak skonfigurować obsługę działań rozszerzenia Cloud Pub/Sub za pomocą zasady ExtensionCallout.

Wysyłając SMS-a

W tym przykładzie działanie publish publikuje wiadomość w postaci prostego ciągu znaków w temacie określonym w konfiguracji rozszerzenia. Działanie publish zwraca identyfikator opublikowanej wiadomości w temacie, w którym została opublikowana, i zapisuje go w zmiennej określonej przez tag <Output>:

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

Poniższa zasada Przypisz wiadomość do przypisania ładunku odpowiedzi wykorzystuje wartość zmiennej przechowującej odpowiedź rozszerzenia. Identyfikator wiadomości jest przechowywany we właściwości messageId zmiennej wyjściowej:

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

Dane odpowiedzi są zwracane w formacie JSON:

{"messageId":"165918654986954"}

Dlatego wartość topic.message.messageId to 165918654986954.

Wiadomość JSON

W tym przykładzie działanie publish publikuje wiadomość w formacie JSON w temacie określonym w konfiguracji rozszerzenia. Działanie publish zwraca identyfikator opublikowanej wiadomości w temacie, w którym została opublikowana, i zapisuje go w zmiennej określonej przez tag <Output>:

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

Poniższa zasada Przypisz wiadomość do przypisania ładunku odpowiedzi wykorzystuje wartość zmiennej przechowującej odpowiedź rozszerzenia. Identyfikator wiadomości jest przechowywany we właściwości messageId zmiennej wyjściowej:

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

Dane odpowiedzi są zwracane w formacie JSON:

{"messageId":"165918654986954"}

Dlatego wartość topic.message.messageId to 165918654986954.

Działania

publish

Publikuje wiadomość w temacie określonym w konfiguracji tego rozszerzenia.

Składnia

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

Przykład ciągu znaków

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

Przykład uporządkowanych danych JSON

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

Przykład atrybutów niestandardowych

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

Parametry żądania

Parametr Opis Typ Domyślne Wymagane
wiadomość Wiadomość do opublikowania. W formacie JSON możesz użyć prostego ciągu znaków lub utworzyć własną strukturę w formacie JSON. Ciąg tekstowy lub JSON Brak Tak
customAttributes

Atrybuty niestandardowe, które mają zostać dodane do wiadomości w formularzu:

"customAttributes": {"attr1": "foo", "attr2": "bar"}.
Tablica JSON Brak Nie

Odpowiedź

Plik JSON zawierający identyfikator opublikowanej wiadomości w temacie. Na przykład:

{"messageId":"165918654986954"}

Dokumentacja konfiguracji

Skorzystaj z podanych niżej instrukcji podczas konfigurowania i wdrażania tego rozszerzenia na potrzeby serwerów proxy interfejsów API.

Typowe właściwości rozszerzeń

Dla każdego rozszerzenia dostępne są poniższe właściwości.

Usługa Opis Domyślnie Wymagany
name Nazwa nadana konfiguracji rozszerzenia. Brak Tak
packageName Nazwa pakietu rozszerzeń podana przez Apigee Edge. Brak Tak
version Numer wersji pakietu rozszerzenia, z którego konfigurujesz rozszerzenie. Brak Tak
configuration Wartość konfiguracji specyficzna dla dodawanego rozszerzenia. Zobacz Właściwości tego pakietu rozszerzeń Brak Tak

Właściwości tego pakietu rozszerzeń

Właściwość Opis Domyślne Wymagane
topic Temat, w którym publikowane są treści. Pobierz tę wartość z usługi Pub/Sub, na przykład z konsoli GCP dla usługi. Na przykład nazwa tematu może mieć postać projects/GCP-PROJECT-ID/topics/TOPIC-NAME Brak. Tak.
credentials Wpisana w konsoli Apigee Edge jest to zawartość pliku klucza konta usługi. Gdy jest wysyłana przez interfejs API zarządzania, jest to wartość zakodowana w formacie base64 wygenerowana z pliku klucza konta usługi. Brak. Tak.