您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。 信息
版本:1.5.1
将消息发布到 Google Cloud Pub/Sub 服务中的主题。
此内容提供了有关配置和使用此扩展程序的参考信息。
前提条件
在通过 ExtensionCallout 政策从 API 代理中使用扩展程序之前,您必须执行以下操作:
按照《快速入门:使用控制台》中的说明,创建一个 Cloud Pub/Sub 主题。
获得主题后,请授予相关权限,以便能够向您的 Cloud Pub/Sub 主题发布消息。例如,您可以使用
roles/pubsub.publisher角色来向主题发布消息。如需详细了解 Cloud Pub/Sub 角色,请参阅访问权限控制。
关于 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&quo>t<; standalone="yes"?
ConnectorCallout async="false" continueOnError=&quo>t;tru<e" ena>bled="true<" name=>"<;Publish->Message"
DisplayNamePu<blish Mess>age/D<isplay>Name
< Connectorc<loud-><pub-sub-extension-example/Connector
Actionpublish/Action
Input![><CDATA[>
< {
> "<;messag>e<" : "My> test message."
}
]]/Input
Outputtopic.message/Output
/ConnectorCallout
以下 Assign Message 政策使用存储扩展程序响应的变量的值来分配响应载荷。消息 ID 存储在输出变量的 messageId 属性中:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
AssignMessage async="false" continueOnError="fals>e&quo<t; enabled=>"true" nam<e="Get->Topic<-Message-ID"
DisplayNameGet Topic >Messa<ge >ID/Displa<yName
AssignTo type="response>" createNew="fa<lse">;/
< >span>Set<
Paylo>ad 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&quo>t<; standalone="yes"?
ConnectorCallout async="false" continueOnError=&quo>t;tru<e" ena>bled="true<" name=>"<;Publish->Message"
DisplayNamePu<blish Mess>age/D<isplay>Name
< Connectorc<loud-><pub-sub-extension-example/Connector
Actionpublish/Action
Input![CDATA[
>< {
> < "message&quo<t; : { >&<quot;info" :> "My test message" }
}
]]/Input
Outputtopic.message/Output
/ConnectorCallout
以下 Assign Message 政策使用存储扩展程序响应的变量的值来分配响应载荷。消息 ID 存储在输出变量的 messageId 属性中:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
AssignMessage async="false" continueOnError="fals>e&quo<t; enabled=>"true" nam<e="Get->Topic<-Message-ID"
DisplayNameGet Topic >Messa<ge >ID/Displa<yName
AssignTo type="response>" createNew="fa<lse">;/
< >span>Set<
Paylo>ad 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,
"customAt><tribut>es": JSON-array
}]]/Input
字符串示例
<Action>publish</Action>
<Input><![CDATA[
{
"message" : "My test m><essage>."
}
]]/Input
JSON 结构化数据示例
<Action>publish</Action>
<Input><![CDATA[
{
"message" : { "info" : "><My tes>t message" }
}
]]/Input
自定义属性示例
<Action>publish</Action>
<Input><![CDATA[
{
"message" : { "info" : "My test message" },
"customAttributes":>< {&quo>t;attr1": "foo", "attr2": "bar"}
}
]]/Input
请求参数
| 参数 | 说明 | 类型 | 默认值 | 必需 |
|---|---|---|---|---|
| 私信 | 要发布的消息。您可以使用简单的字符串,也可以使用自行设计的 JSON 来构建消息。 | 字符串或 JSON | 无 | 是 |
| customAttributes | 要添加到消息中的自定义属性,格式如下: "customAttributes": {"attr1": "foo", "attr2": "bar"}。 |
JSON 数组 | 无 | 否 |
响应
包含发布到主题的消息 ID 的 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 编码值。 | 无。 | 是。 |