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

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

Версия: 2.0.1

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

В этом контенте содержится справочная информация по настройке и использованию этого расширения.

Предпосылки

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

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

Действия

публиковать

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

Синтаксис

<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": {"attr1": "foo", "attr2": "bar"} .
JSON-массив Никто Нет

Ответ

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

{"messageId":"165918654986954"}

Ссылка на конфигурацию

Используйте следующее при настройке и развертывании этого расширения для использования в прокси-серверах API.

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

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

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

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

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