本文档介绍了如何发布消息。
发布者应用会创建消息,然后将其发送到主题。Pub/Sub 会为现有订阅者提供至少一次消息传送及尽力排序功能。
发布者应用的一般流程如下所示:
- 创建一条包含您的数据的消息。
- 向 Pub/Sub 服务器发送请求,以将消息发布到指定的主题。
准备工作
在配置发布工作流之前,请确保您已完成以下任务:
所需的角色
如需获得向主题发布消息所需的权限,请让您的管理员为您授予主题的 Pub/Sub Publisher (roles/pubsub.publisher) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
您需要额外权限才能创建或更新主题和订阅。
消息格式
消息由包含消息数据和元数据的字段组成。在消息中至少指定以下内容之一:
Pub/Sub 服务将以下字段添加到消息中:
- 主题专属的消息 ID
- Pub/Sub 服务接收消息的时间的时间戳
如需详细了解消息,请参阅消息格式。
发布消息
您可以使用 Google Cloud 控制台、Google Cloud CLI、Pub/Sub API 和客户端库发布消息。客户端库可以异步发布消息。
以下示例演示了如何将消息发布到主题。
控制台
要发布消息,请执行以下操作
在 Google Cloud 控制台中,前往 Pub/Sub 主题页面。
点击主题 ID。
在主题详情页面的消息下,点击发布消息。
在消息正文字段中,输入消息数据。
点击发布。
gcloud
要发布消息,请使用 gcloud pubsub topics publish 命令:
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGE_DATA \ [--attribute=KEY="VALUE",...]
请替换以下内容:
- TOPIC_ID:主题的 ID
- MESSAGE_DATA:包含消息数据的字符串
- KEY:消息属性的键
- VALUE:消息属性的键对应的值
REST
要发布消息,请发送如下所示的 POST 请求:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID:publish Content-Type: application/json Authorization: Bearer $(gcloud auth application-default print-access-token)
请替换以下内容:
- PROJECT_ID:包含主题的项目的 ID
- TOPIC_ID:主题的 ID
在请求正文中指定以下字段:
{
"messages": [
{
"attributes": {
"KEY": "VALUE",
...
},
"data": "MESSAGE_DATA",
}
]
}请替换以下内容:
- KEY:消息属性的键
- VALUE:消息属性的键对应的值
- MESSAGE_DATA:包含消息数据的 base64 编码字符串
消息必须包含非空的数据字段或至少一个特性。
如果请求成功,则响应是一个包含消息 ID 的 JSON 对象。以下是包含消息 ID 的响应:
{
"messageIds": [
"19916711285",
]
}C++
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C++ 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C++ API 参考文档。
C#
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C# 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub C# API 参考文档。
Go
以下示例使用 Go Pub/Sub 客户端库的主要版本 (v2)。如果您仍在使用 v1 库,请参阅迁移到 v2 的指南。如需查看 v1 代码示例的列表,请参阅 已弃用的代码示例。
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Node.js
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Node.js API 参考文档。
Node.js
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Node.js API 参考文档。
PHP
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 Pub/Sub PHP API 参考文档。
Python
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Python API 参考文档。