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 控制台为服务账号生成密钥

  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>

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

以下 AssignMessage 政策使用存储扩展程序响应的变量的值来分配响应载荷。消息 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 控制台中输入此内容后,它将成为服务账号密钥文件的内容。通过 Management API 发送时,此参数是从服务账号密钥文件生成的 base64 编码值。 无。 是。