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>

以下 Assign Message 政策使用存储扩展程序响应的变量的值来分配响应载荷。消息 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>

以下 Assign Message 政策使用存储扩展程序响应的变量的值来分配响应载荷。消息 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。

操作

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 数组

响应

包含发布到主题的消息 ID 的 JSON。例如:

{"messageId":"165918654986954"}

配置参考文档

在配置和部署此扩展以用于 API 代理时,请使用以下内容。

常见扩展属性

The following properties are present for every extension.

Property Description Default Required
name Name you're giving this configuration of the extension. None Yes
packageName Name of the extension package as given by Apigee Edge. None Yes
version Version number for the extension package from which you're configuring an extension. None Yes
configuration Configuration value specific to the extension you're adding. See Properties for this extension package None Yes

相应扩展程序包的属性

属性 说明 默认 必需
topic 要发布到的主题。从 Pub/Sub 服务获取此值,例如从该服务的 GCP 控制台获取。例如,主题名称可能采用 projects/GCP-PROJECT-ID/topics/TOPIC-NAME 形式 无。 是。
credentials 在 Apigee Edge 控制台中输入时,这是服务账号密钥文件的内容。通过管理 API 发送时,它是根据服务账号密钥文件生成的 base64 编码值。 无。 是。