像Pulsar中其他实体一样,Schema可以使用 admin API管理
Schema资源
Pulsar Schema是存储在Pulsar中,相当简单的数据结构体。代表Pulsar topic中存储的消息结构。Schema结构组成如下:
- Name:schema名称是schema关联的topic。
- Type:schema type代表schema的类型。 预定义好的schema类型可以在这里找到。 如果是客制化的schema,此处保持空白。
- Payload:Shcema的二进制表示。如何翻译它取决于schema的实现。
- Properties:用户定义的string/stirng map属性。 应用可以使用这个包裹传递程序指定的逻辑。 可能的属性比如schema 关联的Git hash,环境字符串如
dev
或者prod
等等。
所有的shcema通过版本来版本控制。这样你可以得到指定版本的shcema定义,如果版本没有被删除的话。
更新Schema
pulsar-admin
你可以通过upload
子命令上传新的schema
$ pulsar-admin schemas upload <topic-name> --filename /path/to/schema-definition-file
Schema定义文件需要包含下面的json串来定义schema是什么样子的:
{
"type": "STRING",
"schema": "",
"properties": {
"key1" : "value1"
}
}
Schema定义文件的样例可以在 SchemaExample 找到
REST
POST /admin/v2/schemas/:tenant/:namespace/:topic/schema
获得Schema
pulsar-admin
你可以通过get
子命令得到最新版本的Schema
$ pulsar-admin schemas get <topic-name>
{
"version": 0,
"type": "String",
"timestamp": 0,
"data": "string",
"properties": {
"property1": "string",
"property2": "string"
}
}
你也可以通过--version
选项来指定version获取Schema。
$ pulsar-admin schemas get <topic-name> --version <version>
REST API
获取最新版本的schema:
GET /admin/v2/schemas/:tenant/:namespace/:topic/schema
获取指定版本的schema:
GET /admin/v2/schemas/:tenant/:namespace/:topic/schema/:version
删除Schema
pulsar-admin
你可以使用delete
子命令删除schema。
$ pulsar-admin schemas delete <topic-name>
REST API
当前内容版权归 Apache Pulsar 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 Apache Pulsar .