通过 kafka-avro-console-producer 和融合模式注册表使用 RecordNameStrategy

Posted

技术标签:

【中文标题】通过 kafka-avro-console-producer 和融合模式注册表使用 RecordNameStrategy【英文标题】:Use RecordNameStrategy using kafka-avro-console-producer and confluent schema registry 【发布时间】:2021-12-18 02:09:44 【问题描述】:

使用 kafka-avro-console-producer cli 尝试以下命令时

kafka-avro-console-producer \
 --broker-list <broker-list> \
 --topic <topic>  \
 --property schema.registry.url=http://localhost:8081 \
 --property value.schema.id=419
 --property auto.register=false

我有这个错误

org.apache.kafka.common.errors.SerializationException: Error retrieving Avro schema ... 
Caused by: io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException: Subject 'my-topic-name-value' not found.; error code: 40401

因为我没有为我的主题使用 TopicNameStrategy 而是 RecordNameStrategy。我想指定它,请问如何找到允许设置 cli 使用的主题名称的属性?

注意:我,因为我发现了这个https://github.com/confluentinc/schema-registry/blob/a0a04628687a72ac6d01869d881a60fbde4177e7/avro-serializer/src/main/java/io/confluent/kafka/serializers/AbstractKafkaAvroSerDeConfig.java#L97,我已经尝试了以下方法,但没有成功

--property value.subject.name.strategy.default=io.confluent.kafka.serializers.subject.RecordNameStrategy

【问题讨论】:

【参考方案1】:

成功了

--property value.subject.name.strategy=io.confluent.kafka.serializers.subject.RecordNameStrategy

https://github.com/confluentinc/schema-registry/blob/master/schema-serializer/src/main/java/io/confluent/kafka/serializers/AbstractKafkaSchemaSerDeConfig.java#L136

【讨论】:

以上是关于通过 kafka-avro-console-producer 和融合模式注册表使用 RecordNameStrategy的主要内容,如果未能解决你的问题,请参考以下文章

下拉框多选框单选框 通过TagHelper绑定数据

酶:测试孩子通过安装渲染失败,但通过浅时通过

java是通过值传递,也就是通过拷贝传递——通过方法操作不同类型的变量加深理解

通过代码进行 Spring 配置与通过注释进行配置

如何理解“不要通过共享内存来通信,而应该通过通信来共享内存”?

通过邮递员通过 API 使用 Rails 主动存储上传文件(.pdf、.jpg 等)? (不通过 Rails 视图)