Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Версия: 2.0.1
Публиковать сообщения в теме сервиса Google Cloud Pub/Sub.
В нем приведена информация о том, как настроить и использовать это расширение.
Требования
Прежде чем использовать расширение из прокси-сервера API с помощью правила ExtensionCallout, необходимо:
Создайте тему Cloud Pub/Sub, как описано в кратком руководстве по использованию консоли.
После этого предоставьте разрешение на публикацию в теме Cloud Pub/Sub. Например, роль
roles/pubsub.publisherпозволяет публиковать сообщения в темах. Подробнее о ролях Cloud Pub/Sub…Создайте ключ для сервисного аккаунта в консоли Google Cloud.
Используйте содержимое полученного 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, сгенерированное из файла ключа сервисного аккаунта. | Нет. | Да. |