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

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

Версия: 2.0.2

Публикуйте сообщения в тему в сервисе 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 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>

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

Следующая политика назначения сообщений использует значение переменной, хранящей ответ расширения, для назначения полезной нагрузки ответа. Идентификатор сообщения хранится в свойстве 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, например, из консоли Google Cloud для этой службы. Например, имя темы может иметь вид projects/GCP-PROJECT-ID/topics/TOPIC-NAME Никто. Да.
credentials При вводе в консоль Apigee Edge это содержимое файла ключа вашей учетной записи службы . При отправке через API управления это значение в кодировке base64, сгенерированное из файла ключа учетной записи службы. Никто. Да.