Google Cloud Pub/Sub 扩展程序

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

版本:1.5.1

将消息发布到 Google Cloud Pub/Sub 服务中的主题。

本文内容提供了有关配置和使用此扩展程序的参考信息。

前提条件

在采用 ExtensionCallout 政策通过 API 代理使用扩展程序之前,您必须:

  1. 按照快速入门:使用控制台中的说明创建 Cloud Pub/Sub 主题。

  2. 获得该主题后,授予权限以发布到您的 Cloud Pub/Sub 主题。例如,您可以使用 roles/pubsub.publisher 角色将消息发布到主题。如需详细了解 Cloud Pub/Sub 角色,请参阅访问权限控制

  3. 使用 GCP Console 为服务帐号生成密钥

  4. 在通过配置参考添加和配置扩展程序时,使用所得到的 JSON 密钥文件的内容。

关于 Cloud Pub/Sub

Cloud Pub/Sub 提供多对多异步消息传递功能,可将发送者和接收者分离。Cloud Pub/Sub 的消息传递延迟低且持久,可帮助开发者快速集成托管在 Google Cloud Platform 上和外部的系统。

如果您刚开始使用 Cloud Pub/Sub,请查看 Cloud Pub/Sub 文档中的快速入门

示例

以下示例说明了如何使用 ExtensionCallout 政策配置对 Cloud Pub/Sub 扩展程序操作的支持。

短信

在此示例中,publish 操作将消息作为简单字符串发布到扩展程序的配置中指定的主题。publish 操作会返回已发布消息的目标主题中已发布消息的 ID,并将其写入 <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>

下面的分配消息政策使用存储扩展程序响应的变量的值来分配响应载荷。消息 ID 存储在输出变量的 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 操作会返回已发布消息的目标主题中已发布消息的 ID,并将其写入 <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>

下面的分配消息政策使用存储扩展程序响应的变量的值来分配响应载荷。消息 ID 存储在输出变量的 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>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,其中包含发布到主题的消息 ID。例如:

{"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 编码值。 无。 有。