使用文件 (Curl) 在 Kafka Schema 注册表中创建新条目

Meh*_*ANI 1 apache-kafka confluent-schema-registry

在架构注册表中添加条目的“简单”语法如下:

curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json" --data '{"schema": "{\"type\":\"record\",\"name\":\"Payment\",\"namespace\":\"io.confluent.examples.clients.basicavro\",\"fields\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"amount\",\"type\":\"double\"}]}"}' http://localhost:8081/subjects/test-value/versions
Run Code Online (Sandbox Code Playgroud)

然而,当从终端执行此操作时,如果模式很大,这可能会非常繁重且不切实际。有没有一种方便的方法不使用内联模式(即模式内容)来涂抹curl命令,而只传递avro模式文件(avsc)?

我知道有一个python 工具可以做到这一点:

$ python register_schema.py http://localhost:8081 persons-avro person.avsc
Run Code Online (Sandbox Code Playgroud)

我也知道我可以通过 http 请求在 Java 中做到这一点(使用大量样板代码)

但我想知道是否有一种方法可以直接从命令行执行此操作(没有 python,在普通的 bash 中)

Rob*_*att 6

是的,您可以使用jqtojson函数来完成此操作。

/tmp/example.avsc要将架构加载到my_schema_01-value主题运行:

jq '. | {schema: tojson}' /tmp/example.avsc  | \
    curl -X POST http://localhost:8081/subjects/my_schema_01-value/versions \
         -H "Content-Type:application/json" \
         -d @-
Run Code Online (Sandbox Code Playgroud)

参考:https://rmoff.net/2019/01/17/confluence-schema-registry-rest-api-cheatsheet/