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

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

Версия: 1.2.0

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

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

Требования

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

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

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

  3. Как создать ключ для сервисного аккаунта с помощью консоли GCP

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

О Cloud Pub/Sub

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

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

Примеры

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

Опубликовать сообщение

В этом примере действие publish публикует простое сообщение в теме, указанной в конфигурации расширения. Действие publish возвращает идентификатор опубликованного сообщения в теме, в которой оно было опубликовано.

<?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.id</Output>
</ConnectorCallout>

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

<?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.id}</Payload>
    </Set>
</AssignMessage>

В этом примере данные ответа возвращаются в формате JSON, как показано ниже.

{"messageId":"165918654986954"}

Действия

publish

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

Синтаксис

<Action>publish</Action>
<Input><![CDATA[{
  "message" : "message-to-publish"
}]]></Input>

Пример

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

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

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

Ответ

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

{"messageId":"165918654986954"}

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

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

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

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

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

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

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