我只是在这里做一些测试。我为一个主题设置了下面的架构:
{
"type": "STRING",
"schema": "",
"properties": {}
}
我也将其设置is-allow-auto-update-schema
为 false 和schema-validation-enforce
true。然后我运行下面的代码:
python -c "import pulsar; from pulsar.schema import *; prod = pulsar.Client('pulsar://localhost:6650').create_producer('topic1', schema=StringSchema()); prod.send('Hola manola'); prod.close()"
我得到了一个,IncompatibleSchemaException
但我不明白为什么,因为两个模式都表明消息应该只是一个字符串。
is-allow-auto-update-schema
然后我检查了设置to时会发生什么,true
并删除了主题的架构,然后自动上传了下一个架构:
{
"name": "topic1",
"schema": "bnVsbA\u003d\u003d",
"type": "STRING",
"properties": {}
}
事实证明,该schema
字段现在包含某些内容。文档说:
对于原始类型,Pulsar 不会在 SchemaInfo 中存储任何模式数据。SchemaInfo 中的类型用于确定如何对数据进行序列化和反序列化。
我想我错过了一些东西:有人可以给我一个线索吗?谢谢!