Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Версия: 1.5.2
Публикуйте сообщения в теме в сервисе Google Cloud Pub/Sub.
Этот контент содержит информацию по настройке и использованию этого расширения.
Предварительные условия
Прежде чем использовать расширение из API-прокси с помощью политики ExtensionCallout , необходимо:
Создайте тему Cloud Pub/Sub, как описано в разделе Краткое руководство: использование консоли .
Получив тему, предоставьте разрешение на публикацию в вашей теме Cloud Pub/Sub. Например, вы можете использовать роль
roles/pubsub.publisher
для публикации в темах. Дополнительные сведения о ролях Cloud Pub/Sub см. в разделе Управление доступом .Используйте консоль GCP для создания ключа для учетной записи службы .
Используйте содержимое полученного ключевого файла 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>
Следующая политика назначения сообщения использует значение переменной, хранящей ответ расширения, для назначения полезных данных ответа. Идентификатор сообщения хранится в свойстве 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, например, из консоли GCP службы. Например, имя темы может иметь вид: projects/GCP-PROJECT-ID/topics/TOPIC-NAME | Никто. | Да. |
credentials | При вводе в консоли Apigee Edge это содержимое файла ключей вашей сервисной учетной записи . При отправке через API управления это значение в кодировке Base64, созданное из файла ключей сервисного аккаунта. | Никто. | Да. |