Расширение Google Cloud Pub/Sub

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Версия: 2.0.1

Публиковать сообщения в теме сервиса Google Cloud Pub/Sub.

В нем приведена информация о том, как настроить и использовать это расширение.

Требования

Прежде чем использовать расширение из прокси-сервера API с помощью правила ExtensionCallout, необходимо:

  1. Создайте тему Cloud Pub/Sub, как описано в кратком руководстве по использованию консоли.

  2. После этого предоставьте разрешение на публикацию в теме Cloud Pub/Sub. Например, роль roles/pubsub.publisher позволяет публиковать сообщения в темах. Подробнее о ролях Cloud Pub/Sub…

  3. Создайте ключ для сервисного аккаунта в консоли Google Cloud.

  4. Используйте содержимое полученного JSON-файла ключа при добавлении и настройке расширения, следуя инструкциям по настройке.

О Cloud Pub/Sub

Cloud Pub/Sub – это асинхронная система обмена сообщениями "многие ко многим", которая позволяет отделить отправителей от получателей. Cloud Pub/Sub обеспечивает надежный обмен сообщениями с низкой задержкой, что позволяет разработчикам быстро интегрировать системы, размещенные в Google Cloud и за его пределами.

Если вы только начинаете работать с Cloud Pub/Sub, ознакомьтесь с краткими руководствами в документации по Cloud Pub/Sub.

Примеры

В приведенных ниже примерах показано, как настроить поддержку действий расширений Cloud Pub/Sub с помощью правила ExtensionCallout.

SMS

В этом примере действие publish публикует сообщение в виде строки в теме, указанной в конфигурации расширения. Действие publish возвращает идентификатор опубликованного сообщения в теме, в которой оно было опубликовано, и записывает его в переменную, указанную тегом <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>

В следующем правиле Assign Message для назначения полезной нагрузки ответа используется значение переменной, в которой хранится ответ расширения. Идентификатор сообщения хранится в свойстве messageId выходной переменной:

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

Данные ответа возвращаются в формате JSON:

{"messageId":"165918654986954"}

Таким образом, значение topic.message.messageId – 165918654986954.

Сообщение JSON

В этом примере действие publish публикует сообщение в формате JSON в теме, указанной в конфигурации расширения. Действие publish возвращает идентификатор опубликованного сообщения в теме, в которой оно было опубликовано, и записывает его в переменную, указанную тегом <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>

В следующем правиле Assign Message для назначения полезной нагрузки ответа используется значение переменной, в которой хранится ответ расширения. Идентификатор сообщения хранится в свойстве messageId выходной переменной:

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

Данные ответа возвращаются в формате JSON:

{"messageId":"165918654986954"}

Таким образом, значение topic.message.messageId – 165918654986954.

Действия

publish

Публикует сообщение в теме, указанной в конфигурации этого расширения.

Синтаксис

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

Пример строки

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

Пример структурированных данных JSON

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

Пример настраиваемых атрибутов

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

Параметры запроса

Параметр Описание Тип По умолчанию Обязательно
Сообщение Сообщение, которое нужно опубликовать. Вы можете использовать строку или структурировать сообщение с помощью JSON. Строка или JSON Нет Да
customAttributes

Настраиваемые атрибуты, которые нужно добавить в сообщение в форме:

"customAttributes": {"attr1": "foo", "attr2": "bar"}.
Массив JSON Нет Нет

Ответ

JSON, содержащий идентификатор сообщения, опубликованного в теме. Пример:

{"messageId":"165918654986954"}

Справочник по конфигурации

При настройке и развертывании этого расширения для использования в прокси API следуйте приведенным ниже инструкциям.

Общие свойства расширений

Следующие свойства присутствуют для каждого расширения.

Свойство Описание По умолчанию Необходимый
name Имя, которое вы даете этой конфигурации расширения. Никто Да
packageName Имя пакета расширения, предоставленное Apigee Edge. Никто Да
version Номер версии пакета расширения, из которого вы настраиваете расширение. Никто Да
configuration Значение конфигурации, относящееся к добавляемому расширению. См. Свойства этого пакета расширения. Никто Да

Свойства пакета расширения

Свойство Описание По умолчанию Обязательно
topic Тема, в которую нужно опубликовать сообщение. Получите это значение из сервиса Pub/Sub, например из консоли Google Cloud для сервиса. Например, название темы может выглядеть так: projects/GCP-PROJECT-ID/topics/TOPIC-NAME. Нет. Да.
credentials При вводе в консоли Apigee Edge это содержимое вашего файла ключа сервисного аккаунта. При отправке с помощью API управления это значение в кодировке base64, сгенерированное из файла ключа сервисного аккаунта. Нет. Да.