像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

  1. $ pulsar-admin schemas upload <topic-name> --filename /path/to/schema-definition-file

Schema定义文件需要包含下面的json串来定义schema是什么样子的:

  1. {
  2. "type": "STRING",
  3. "schema": "",
  4. "properties": {
  5. "key1" : "value1"
  6. }
  7. }

Schema定义文件的样例可以在 SchemaExample 找到

REST

POST /admin/v2/schemas/:tenant/:namespace/:topic/schema

获得Schema

pulsar-admin

你可以通过get子命令得到最新版本的Schema

  1. $ pulsar-admin schemas get <topic-name>
  2. {
  3. "version": 0,
  4. "type": "String",
  5. "timestamp": 0,
  6. "data": "string",
  7. "properties": {
  8. "property1": "string",
  9. "property2": "string"
  10. }
  11. }

你也可以通过--version选项来指定version获取Schema。

  1. $ 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。

  1. $ pulsar-admin schemas delete <topic-name>

REST API

DELETE /admin/v2/schemas/:tenant/:namespace/:topic/schema