通过 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的主要内容,如果未能解决你的问题,请参考以下文章
java是通过值传递,也就是通过拷贝传递——通过方法操作不同类型的变量加深理解