本页面介绍了如何为 Pub/Sub 主题创建和管理架构。
架构是一种格式 Pub/Sub 消息的 data 字段。架构会在发布者和订阅者之间就消息的格式创建协定。Pub/Sub 强制执行此格式。架构通过为消息类型和权限创建集中授权,为组织中的数据流提供便利。Pub/Sub 消息架构定义了消息中字段的名称和数据类型。
架构类型
您可以使用以下框架之一在 Pub/Sub 中创建架构:
例如,以下架构一次定义仓库的清单,一次是 Avro 格式,另一次是协议缓冲区格式。
Apache Avro 格式
{
"type" : "record",
"name" : "Avro",
"fields" : [
{
"name" : "ProductName",
"type" : "string",
"default": ""
},
{
"name" : "SKU",
"type" : "int",
"default": 0
},
{
"name" : "InStock",
"type" : "boolean",
"default": false
}
]
}
协议缓冲区格式
syntax = "proto3";
message ProtocolBuffer {
string product_name = 1;
int32 SKU = 2;
bool in_stock = 3;
}
准备工作
在开始配置架构之前,请确保您符合以下要求:
管理架构所需的角色和权限
如需获取创建和管理架构所需的权限,请让管理员授予您项目的 Pub/Sub Editor (roles/pubsub.editor) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限。
此预定义角色包含创建和管理架构所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
-
创建架构:
pubsub.schemas.create
-
将架构附加到主题:
pubsub.schemas.attach
-
提交架构修订版本:
pubsub.schemas.commit
-
删除架构或架构修订版本:
pubsub.schemas.delete
-
获取架构或架构修订版本:
pubsub.schemas.get
-
列出架构:
pubsub.schemas.list
-
列出架构修订版本:
pubsub.schemas.listRevisions
-
回滚架构:
pubsub.schemas.rollback
-
验证消息:
pubsub.schemas.validate
-
获取架构的 IAM 政策:
pubsub.schemas.getIamPolicy
-
为架构配置 IAM 政策:
pubsub.schemas.setIamPolicy
您可以为主帐号(例如用户、群组、网域或服务帐号)授予角色和权限。您可以在一个项目中创建架构,并将其附加到位于另一个项目中的主题。确保您拥有每个项目所需的权限。
创建架构
您可以使用 Google Cloud 控制台、gcloud CLI、Pub/Sub API 或 Cloud 客户端库创建架构。以下是创建架构的一些准则:
如需让架构与 Pub/Sub 搭配使用,您只能定义一个顶级类型。不支持引用其他类型的导入语句。
您可以将同一架构与多个主题相关联。
您可以手动测试消息是否针对架构进行验证。
控制台
如需创建架构,请按照以下步骤操作:
在 Google Cloud 控制台中,转到 Pub/Sub 架构页面。
点击创建架构。
在架构 ID 字段中,输入架构的 ID。
如需了解如何为架构命名,请参阅为主题、订阅或快照命名的准则。
对于架构类型,请选择 Avro 或协议缓冲区。
详细了解架构类型。
在架构定义字段中,输入架构的 Avro 或协议缓冲区定义。
例如,以下是 Avro 中的示例架构。
{ "type": "record", "name": "Avro", "fields": [ { "name": "ProductName", "type": "string", "default": "" }, { "name": "SKU", "type": "int", "default": 0 }, { "name": "InStock", "type": "boolean", "default": false } ] }
可选:点击验证定义以检查架构定义是否正确。
验证检查不会检查架构与要发布的消息的兼容性。在下一步中测试消息。
可选:您可以测试是否发布具有正确架构的消息。
点击测试消息。
在测试消息窗口中,选择一种消息编码类型。
在邮件正文中,输入测试邮件。
点击测试。
例如,以下是测试架构的示例消息。 在此示例中,选择消息编码作为
JSON
。{"ProductName":"GreenOnions", "SKU":34543, "InStock":true}
退出测试消息页面。
点击创建以保存架构。
gcloud
gcloud pubsub schemas create SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
其中:
- SCHEMA_TYPE 是
avro
或protocol-buffer
。 - SCHEMA_DEFINITION 是包含架构定义的
string
,系统会根据所选架构类型设置其格式。
您还可以在文件中指定架构定义:
gcloud pubsub schemas create SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition-file=SCHEMA_DEFINITION_FILE
其中:
- SCHEMA_TYPE 是
avro
或protocol-buffer
。 - SCHEMA_DEFINITION_FILE 是一个
string
,它包含带有架构定义的文件的路径,其格式取决于所选的架构类型。
REST
要创建架构,请发送如下所示的 POST 请求:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/SCHEMA_ID Authorization: Bearer $(gcloud auth application-default print-access-token) Content-Type: application/json --data @response-body.json
在请求正文中指定以下字段:
{ "definition": SCHEMA_DEFINITION "type": SCHEMA_TYPE }
其中:
- SCHEMA_TYPE 是
avro
或protocol-buffer
。 - SCHEMA_DEFINITION 是包含架构定义的字符串,系统会根据所选架构类型设置其格式。
响应正文应包含架构资源的 JSON 表示法。例如:
{ "name": SCHEMA_NAME, "type": SCHEMA_TYPE, "definition": SCHEMA_DEFINITION "revisionId": REVISION_ID "revisionCreateTime": REVISION_CREATE_TIME }
其中:
- REVISION_ID 是服务器为修订版本生成的 ID。
- REVISION_CREATE_TIME 是创建修订版本的 ISO 8601 时间戳。
C++
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C++ 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C++ API 参考文档。
Avro
Proto
C#
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C# 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub C# API 参考文档。
Avro
Proto
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Avro
Proto
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Avro
Proto
Node.js
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Node.js API 参考文档。
Avro
Proto
PHP
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 Pub/Sub PHP API 参考文档。
Avro
Proto
Python
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Python API 参考文档。
Avro
Proto
Ruby
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Ruby API 参考文档。
Avro
Proto
创建架构后,您可以在架构页面中查看架构的详细信息。您现在可以将架构与主题相关联。
提交架构修订版本
您可以修改 Pub/Sub 中的架构。
您可以使用 Google Cloud 控制台、gcloud CLI、Pub/Sub API 或 Cloud 客户端库提交架构修订版本。
以下是提交架构修订版本的一些准则:
您可以在特定限制条件内修改架构:
对于协议缓冲区架构,您可以添加或移除可选字段。您无法添加或删除其他字段。也无法修改任何现有字段。
如需了解 Avro 架构,请参阅 Avro 文档,了解有关架构解析的规则。
一个架构最多可以有 20 个修订版本。 如果您超过了上限,请在创建架构修订版本之前将其删除。
每个修订版本都有唯一的关联 ID。修订版本 ID 是自动生成的 8 个字符 UUID。
更新用于主题验证的架构的修订版本范围或修订版本时,更改可能需要几分钟才能生效。
控制台
如需创建架构修订版本,请按以下步骤操作:
在 Google Cloud 控制台中,转到 Pub/Sub 架构页面。
点击现有架构的架构 ID。
系统会打开架构的架构详情页面。
点击创建修订版本。
系统会打开创建架构修订版本页面。
根据需要进行更改。
例如,对于您在创建架构中创建的 Avro 示例架构,您可以添加一个名为
Price
的额外可选字段,如下所示:{ "type": "record", "name": "Avro", "fields": [ { "name": "ProductName", "type": "string", "default": "" }, { "name": "SKU", "type": "int", "default": 0 }, { "name": "InStock", "type": "boolean", "default": false }, { "name": "Price", "type": "double", "default": "0.0" }, ] }
点击验证定义以检查架构定义是否正确。
您还可以验证架构的消息。
点击测试消息以测试示例消息。
在测试消息窗口中,选择一种消息编码类型。
在邮件正文中,输入测试邮件。
例如,以下是测试架构的示例消息。 在此示例中,选择消息编码作为
JSON
。{"ProductName":"GreenOnions", "SKU":34543, "Price":12, "InStock":true}
点击测试。
点击提交以保存架构。
gcloud
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
其中:
- SCHEMA_TYPE 是
avro
或protocol-buffer
。 - SCHEMA_DEFINITION 是包含架构定义的
string
,系统会根据所选架构类型设置其格式。
您还可以在文件中指定架构定义:
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition-file=SCHEMA_DEFINITION_FILE
其中:
- SCHEMA_TYPE 是
avro
或protocol-buffer
。 - SCHEMA_DEFINITION_FILE 是一个
string
,它包含带有架构定义的文件的路径,其格式取决于所选的架构类型。
REST
如需提交架构修订版本,请发送如下所示的 POST 请求:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/SCHEMA_ID:commit Authorization: Bearer $(gcloud auth application-default print-access-token) Content-Type: application/json --data @response-body.json
在请求正文中指定以下字段:
{ "definition": SCHEMA_DEFINITION "type": SCHEMA_TYPE "name": SCHEMA_NAME }
其中:
- SCHEMA_TYPE 是
AVRO
或PROTOCOL_BUFFER
。 - SCHEMA_DEFINITION 是包含架构定义的字符串,系统会根据所选架构类型设置其格式。
- SCHEMA_NAME 是现有架构的名称。
响应正文应包含架构资源的 JSON 表示法。例如:
{ "name": SCHEMA_NAME, "type": SCHEMA_TYPE, "definition": SCHEMA_DEFINITION "revisionId": REVISION_ID "revisionCreateTime": REVISION_CREATE_TIME }
其中:
- REVISION_ID 是服务器为修订版本生成的 ID。
- REVISION_CREATE_TIME 是创建修订版本的 ISO 8601 时间戳。
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Avro
Proto
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Avro
Proto
Python
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Python API 参考文档。
Avro
Proto
提交架构修订版本后,您可以在架构页面中查看新修订版本的详细信息。
将架构与主题相关联
您可以在创建或修改主题时将架构与主题相关联。以下是将架构与主题相关联的准则:
您可以将架构与一个或多个主题相关联。
架构与主题关联后,主题从发布者收到的每条消息都必须遵循该架构。
将架构与主题相关联时,您还必须指定以
BINARY
或JSON
形式发布的消息的编码。如果与主题关联的架构具有修订版本,消息必须与编码匹配,并针对可用范围内的修订版本进行验证。否则,此消息将无法发布。
系统会根据创建时间以反向时间顺序尝试修订版本。如需创建架构修订版本,请参阅提交架构修订版本。
消息架构的验证逻辑
将架构与主题相关联时,如果架构有修订版本,您可以指定要使用的修订版本子集。如果您未指定范围,则整个范围将用于验证。
如果您未指定允许第一个修订版本的修订版本,则系统会使用架构中最早的修订版本进行验证。如果您未指定允许的最后一个修订版本,则系统会使用架构的最新修订版本。
让我们以附加到 T
主题的架构 S
为例。
架构 S
按顺序创建修订版本 ID A
、B
、C
和 D
,其中 A
是第一个或最早修订版本。所有架构都不完全相同,也不是现有架构的回滚。
如果仅将允许首次修订字段设置为
B
,则仅符合架构A
的消息将被拒绝,而符合架构B
、C
和D
的消息将被接受。如果您仅将上次允许修订版本字段设置为
C
,则系统将接受符合架构A
、B
和C
的消息,并拒绝仅遵循架构D
的消息。如果您将允许第一个修订版本设置为
B
并将上次修订允许设置为C
,则接受符合架构B
和C
的消息。您也可以将第一个修订版本和最后一个修订版本设置为同一修订版本 ID。在这种情况下,我们只接受符合该修订版本的邮件。
创建主题时创建并关联架构
您可以使用 Google Cloud 控制台、gcloud CLI、Pub/Sub API 或 Cloud 客户端库创建包含架构的主题。
控制台
在 Google Cloud 控制台中,转到 Pub/Sub 主题页面。
点击创建主题。
在主题 ID 字段中,输入主题 ID。
如要为主题命名,请参阅准则。
选中使用架构复选框。
保留其余字段的默认设置。
您可以创建架构或使用现有架构。
如果您要创建架构,请按以下步骤操作: `
- 对于选择 Pub/Sub 架构,选择创建新架构。
创建架构页面显示在辅助标签页中。
按照创建架构中的步骤操作。
返回创建主题标签页,然后点击刷新。
在选择 Pub/Sub 架构字段中搜索您的架构。
选择消息编码:JSON 或二进制。
您刚刚创建的架构有一个修订版本 ID。您可以按照提交架构修订版本中的说明创建其他架构修订版本。
如果您要关联已创建的架构,请按以下步骤操作:
在选择 Pub/Sub 架构部分,选择一个现有架构。
选择消息编码:JSON 或二进制。
可选:如果所选架构具有修订版本,对于 Revision Range,请使用 First revision allow 和 Last revision allow 的下拉菜单。
您可以指定两个字段,仅指定一个字段,也可以根据自己的要求保留默认设置。
保留其余字段的默认设置。
点击创建以保存该主题,并将其分配给所选架构。
gcloud
如需创建使用先前创建的架构分配的主题,请运行 gcloud pubsub topics create
命令:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID \ --first-revision-id=FIRST_REVISION_ID \ --last-revision-id=LAST_REVISION_ID \
其中:
- TOPIC_ID 是您正在创建的主题的 ID。
- ENCODING_TYPE 是针对架构验证的消息的编码。该值必须设置为
JSON
或BINARY
。 - SCHEMA_ID 是现有架构的 ID。
- FIRST_REVISION_ID 是要验证的最早修订版本的 ID。
- LAST_REVISION_ID 是要验证的最新修订版本的 ID。
--first-revision-id
和 --last-revision-id
都是可选的。
您也可以从其他 Google Cloud 项目分配架构:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID \ --schema-project=SCHEMA_PROJECT \ --project=TOPIC_PROJECT
其中:
- SCHEMA_PROJECT 是架构的 Google Cloud 项目的项目 ID。
- TOPIC_PROJECT 是主题的 Google Cloud 项目的项目 ID。
REST
如需创建主题,请使用 projects.topics.create
方法:
请求:
必须使用 Authorization
标头中的访问令牌对请求进行身份验证。如需获取当前应用默认凭据的访问令牌,请运行以下命令:gcloud auth application-default print-access-token
。
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
请求正文:
{ "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" } }
其中:
- PROJECT_ID 是项目 ID。
- TOPIC_ID 是您的主题 ID。
- SCHEMA_NAME 是应该根据其验证发布消息的架构的名称。格式为
projects/PROJECT_ID/schemas/SCHEMA_ID
。 - ENCODING_TYPE 是根据架构验证过的消息的编码。其必须设置为
JSON
或BINARY
。 - FIRST_REVISION_ID 是要验证的最早修订版本的 ID。
- LAST_REVISION_ID 是要验证的最新修订版本的 ID。
firstRevisionId
和 lastRevisionId
都是可选的。
响应:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID", "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" } }
如果请求中未提供 firstRevisionId
和 lastRevisionId
,则系统会将其省略。
C++
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C++ 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C++ API 参考文档。
C#
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C# 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub C# API 参考文档。
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Node.js
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Node.js API 参考文档。
PHP
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 Pub/Sub PHP API 参考文档。
Python
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Python API 参考文档。
Ruby
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Ruby API 参考文档。
修改与主题关联的架构
您可以修改主题以附加架构、移除架构或更新用于验证消息的修订版本范围。一般来说,如果您计划为使用的架构更改,则可以提交新的修订版本并更新主题的修订版本范围。
您可以使用 Google Cloud 控制台、gcloud CLI、Pub/Sub API 或 Cloud 客户端库修改与主题关联的架构。
控制台
在 Google Cloud 控制台中,转到 Pub/Sub 主题页面。
点击主题的主题 ID。
在主题详情页面中,点击修改。
您可以对架构进行以下更改。
更改可能需要几分钟时间才能生效。
如果要从主题中移除架构,请在修改主题页面中取消选中使用架构复选框。
如果要更改架构,请在架构部分选择架构的名称。
根据需要更新其他字段。
- 如果要更新修订版本范围,对于 Revision Range,请使用 First revision allow 和 Last revision allow 的下拉菜单。
您可以指定两个字段,仅指定一个字段,也可以根据自己的要求保留默认设置。
点击更新以保存更改。
gcloud
gcloud pubsub topics update TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_NAME \ --first-revision-id=FIRST_REVISION_ID \ --last-revision-id=LAST_REVISION_ID \
其中:
- TOPIC_ID 是您正在创建的主题的 ID。
- ENCODING_TYPE 是针对架构验证的消息的编码。该值必须设置为
JSON
或BINARY
。 - SCHEMA_NAME 是现有架构的名称。
- FIRST_REVISION_ID 是要验证的最早修订版本的 ID。
- LAST_REVISION_ID 是要验证的最新修订版本的 ID。
--first-revision-id
和 --last-revision-id
都是可选的。
REST
如需更新主题,请使用 projects.topics.update
方法:
请求:
必须使用 Authorization
标头中的访问令牌对请求进行身份验证。如需获取当前应用默认凭据的访问令牌,请运行以下命令:gcloud auth application-default print-access-token
。
PATCH https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
请求正文:
{ "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" "update_mask": } }
其中:
- PROJECT_ID 是项目 ID。
- TOPIC_ID 是您的主题 ID。
- SCHEMA_NAME 是应该根据其验证发布消息的架构的名称。格式为
projects/PROJECT_ID/schemas/SCHEMA_ID
。 - ENCODING_TYPE 是根据架构验证过的消息的编码。其必须设置为
JSON
或BINARY
。 - FIRST_REVISION_ID 是要验证的最早修订版本的 ID。
- LAST_REVISION_ID 是要验证的最新修订版本的 ID。
firstRevisionId
和 lastRevisionId
都是可选的。
响应:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID", "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" } }
更新后,系统不会同时设置 firstRevisionId
和 lastRevisionId
。
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Python
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Python API 参考文档。
回滚架构修订版本
您可以回滚到特定的架构修订版本。 借助回滚操作,您可以使用与之前的修订版本完全相同的架构定义创建另一个架构修订版本。
您可以使用 Google Cloud 控制台、gcloud CLI、Pub/Sub API 或 Cloud 客户端库回滚架构。请按照以下步骤操作:
控制台
在 Google Cloud 控制台中,转到 Pub/Sub 架构页面。
点击现有架构的名称。
系统会打开架构的架构详情页面。
点击回滚。
系统会打开回滚架构对话框。
选择要将架构回滚到的修订版本。
点击确认,保存回滚操作。
系统会使用修订版本处理操作中指定的架构创建新修订版本。
在架构详细信息页面中,选择最新版本的架构和所选版本作为回滚操作的来源。
点击查看差异。
您可以验证这两个架构是否相同。
您可以通过更新上次允许的修订版本字段,将您刚刚创建的架构修订版本用作主题的最后验证。
gcloud
gcloud pubsub schemas rollback SCHEMA_ID \ --revision-id=REVISION_ID
其中:
- REVISION_ID 是您要回滚到的修订版本。
REST
要回滚架构,请发送如下所示的 POST 请求:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/SCHEMA_ID:rollback Authorization: Bearer $(gcloud auth application-default print-access-token) Content-Type: application/json --data @response-body.json
在请求正文中指定以下字段:
{ "revisionId": REVISION_KD }
其中:
- REVISION_KD 是要回滚到的修订版本的 ID。
响应正文应包含架构资源的 JSON 表示法。
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Python
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Python API 参考文档。
删除架构修订版本
以下是删除架构修订版本的一些重要准则:
您可以从架构中删除一个或多个架构修订版本。
如果架构只有一个修订版本,则无法删除该修订版本。 请改为删除架构。
架构的删除操作还会删除与该架构关联的所有修订版本。
如果您删除架构,则向与该架构关联的主题发布消息会失败。
如果您删除架构修订版本,并且指定为主题的第一个修订版本,则下一个修订版本将用于验证。
如果将已删除的架构修订版本指定为主题的最后一个修订版本,则将改用上一个架构修订版本进行验证。
如果已删除的架构修订版本位于主题的指定修订版本范围内以进行验证,系统会跳过该修订版本。
您可以使用 Google Cloud 控制台、gcloud CLI、Pub/Sub API 或 Cloud 客户端库删除架构修订版本。
控制台
在 Google Cloud 控制台中,转到 Pub/Sub 架构页面。
点击现有架构的名称。
系统会打开架构的架构详情页面。
选择要删除的修订版本。您还可以选择多个修订版本。
点击删除修订版本。
确认删除操作。
gcloud
gcloud pubsub schemas delete-revision SCHEMA_NAME@REVISION_ID
其中:
- REVISION_ID 是您要回滚到的修订版本。
REST
要删除架构修订版本,请发送如下所示的 DELETE 请求:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/SCHEMA_ID@REVISION_ID:deleteRevision Authorization: Bearer $(gcloud auth application-default print-access-token) Content-Type: application/json --data @response-body.json
响应正文应包含代表已删除架构资源的 JSON。
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Python
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Python API 参考文档。
删除架构
在删除架构之前,请确保移除其与主题的关联。
您可以使用 Google Cloud 控制台、gcloud CLI、Pub/Sub API 或 Cloud 客户端库删除架构。
控制台
在 Google Cloud 控制台中,转到 Pub/Sub 架构页面。
选择要删除的一个或多个架构。
点击删除。
确认删除操作。
gcloud
gcloud pubsub schemas delete SCHEMA_NAME
REST
如需删除架构,请发送如下所示的 DELETE 请求:
DELETE https://pubsub.googleapis.com/v1/SCHEMA_NAME
C++
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C++ 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C++ API 参考文档。
C#
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C# 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub C# API 参考文档。
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Node.js
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Node.js API 参考文档。
PHP
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 Pub/Sub PHP API 参考文档。
Python
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Python API 参考文档。
Ruby
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Ruby API 参考文档。
查看架构详情
您可以使用 Google Cloud 控制台、gcloud CLI、Pub/Sub API 或 Cloud 客户端库获取架构的详细信息。结果将返回最新修订版本 ID 的详细信息。
控制台
在 Google Cloud 控制台中,转到 Pub/Sub 架构页面。
点击要查看的架构的名称。
系统会打开架构的架构详情页面。
gcloud
如需查看架构的最新修订版本,请执行以下操作:
gcloud pubsub schemas describe SCHEMA_NAME
如需查看架构的特定修订版本,请执行以下操作:
gcloud pubsub schemas describe SCHEMA_ID@REVISION_ID
其中:
- REVISION_ID 是您要回滚到的修订版本。
REST
如需获取架构的最新修订版本的详细信息,请发送如下所示的 GET 请求:
GET https://pubsub.googleapis.com/v1/SCHEMA_NAME
如需获取架构特定修订版本的详细信息,请发送如下所示的 GET 请求:
GET https://pubsub.googleapis.com/v1/SCHEMA_NAME@REVISION_ID
如果成功,响应正文将包含一个架构类实例。
C++
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C++ 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C++ API 参考文档。
C#
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C# 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub C# API 参考文档。
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Node.js
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Node.js API 参考文档。
PHP
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 Pub/Sub PHP API 参考文档。
Python
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Python API 参考文档。
Ruby
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Ruby API 参考文档。
列出架构
您可以使用 Google Cloud 控制台、gcloud CLI、Pub/Sub API 或 Cloud 客户端库列出 Google Cloud 项目中的架构。
控制台
在 Google Cloud 控制台中,转到 Pub/Sub 架构页面。
系统会显示架构列表。
gcloud
gcloud pubsub schemas list
使用 gcloud pubsub schemas list --view=FULL
命令可查看每个架构的最新定义。
REST
要列出项目中的架构,请发送如下所示的 GET 请求:
GET https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas
如果成功,响应正文将包含一个 JSON 对象,该对象包含项目中所有架构的最新修订版本。
C++
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C++ 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C++ API 参考文档。
C#
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C# 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub C# API 参考文档。
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Node.js
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Node.js API 参考文档。
PHP
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 Pub/Sub PHP API 参考文档。
Python
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Python API 参考文档。
Ruby
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Ruby API 参考文档。
列出架构的修订版本
您可以使用 Google Cloud 控制台、gcloud CLI、Pub/Sub API 或 Cloud 客户端库列出 Google Cloud 项目中架构的修订版本。
控制台
在 Google Cloud 控制台中,转到 Pub/Sub 架构页面。
系统会显示架构列表。
点击要查看的架构的名称。
系统会打开架构的架构详情页面。
在修订版本部分,您可以查看架构的可用修订版本列表。
gcloud
如需查看架构的最新修订版本,请执行以下操作:
gcloud pubsub schemas list-revisions SCHEMA_ID
使用 gcloud pubsub schemas list-revisions <var>SCHEMA_ID</var> --view=FULL
命令可查看架构修订版本的定义。
REST
如需列出架构的架构修订版本,请发送如下所示的 GET 请求:
GET https://pubsub.googleapis.com/v1/projects/SCHEMA_NAME:listRevisions
如果成功,响应正文将包含一个 JSON 对象,其中包含架构的所有架构修订版本。
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Python
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Python API 参考文档。
验证架构定义
您可以使用 Google Cloud 控制台、gcloud CLI、Pub/Sub API 或 Cloud 客户端库验证架构。
验证检查不会检查新修订版本与旧修订版本的兼容性。
验证架构的消息
您可以在创建架构资源之前或之后验证消息是否遵循特定架构。此步骤可确保在应用架构之前,您打算通过与架构关联的主题发送的消息实际上是匹配的。
您可以使用 Google Cloud 控制台、gcloud CLI、Pub/Sub API 或 Cloud 客户端库针对架构验证消息。
控制台
在 Google Cloud 控制台中,转到 Pub/Sub 架构页面。
系统会显示架构列表。
点击现有架构的架构 ID。
系统会打开架构的架构详情页面。
在修订版本部分中,点击要为其验证消息的修订版本。
在详细信息部分,点击测试消息。
在测试消息窗口中,选择一种消息编码类型。
在消息正文中,输入测试消息。
点击测试。
架构的配额和限制
架构具有以下限制:
架构定义字段的大小不得超过 50 KB。
一个项目最多可以有 10000 个架构。
单个架构最多只能有 20 个修订版本。
如需了解与 Pub/Sub 相关的架构和限制,请参阅 Pub/Sub 配额和限制。
后续步骤
为您的主题选择订阅类型,或者创建 BigQuery 订阅以将消息直接写入 BigQuery。
为您的主题创建订阅。
处理订阅配置了架构的主题的消息。