找不到主题融合的kafka模式注册表错误代码“:40401,”消息

问题描述 投票:0回答:1

[我正在使用Kafka融合架构注册表docker映像,当我在本地对其进行测试时(在本地安装了kafka时,此工作按预期进行,但是当我尝试将其与远程Kafka群集一起使用时,出现错误:

[{"error_code":40401,"message":"Subject not found. io.confluent.rest.exceptions.RestNotFoundException: Subject not found.\nio.confluent.rest.exceptions.RestNotFoundException: Subject not found.\n\tat io.confluent.kafka.schemaregistry.rest.exceptions.Errors.subjectNotFoundException(Errors.java:51)\n\tat io.confluent.kafka.schemaregistry.rest.resources.SubjectVersionsResource.listVersions(SubjectVersionsResource.java:157)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(Delegat ingMethodAccessorImpl.java:43)\ n \ tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat

下面是我用来运行docker的命令

docker run  --network host -p 8081:8081        -e  SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS=first_broker:9092,second_broker:9092,third_broker:9092    -e SCHEMA_REGISTRY_HOST_NAME=0.0.0.0     -e SCHEMA_REGISTRY_LISTENERS=http://0.0.0.0:8081     -e SCHEMA_REGISTRY_DEBUG=true confluentinc/cp-schema-registry:latest

我得到的错误堆栈是:

    Producer clientId=producer-1] Updated cluster metadata updateVersion 2 to MetadataCache{cluster=Cluster(id = dIU-fffyfHXRDeVgZA4fud_eBw, nodes = [first_broker:9092 (id: 2 rack: subnret-0ecf514e9ghg94d5197a7), second_broker:9092 (id: 1 rack: subrnet-0befbedzd392e5497137), third_broker:9092 (id: 3 rack: subnret-0rrc00cc1dbd14c0350)], partitions = [Partition(topic = topics, partition = 0, leader = 1, replicas = [1,3,2], isr = [1,3,2], offlineReplicas = [])], controller = first_broker:9092 (id: 3 rack: subnret-0c0rr0cc1dbd14c0350))}
Sending POST with input {"schema":"\"string\""} to http://0.0.0.0:8081/subjects/topicName-value/versions
org.apache.kafka.common.errors.SerializationException: Error serializing Avro message
Caused by: java.net.SocketException: Unexpected end of file from server
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:851)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:678)
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:8

[我注意到在远程Kafka群集中创建了_schemas主题,但是当我使用客户控制台从该主题_shemas中读取数据时,得到了以下结果:

{"keytype":"NOOP","magic":0}-null
{"keytype":"NOOP","magic":0}-null
{"keytype":"NOOP","magic":0}-null
{"keytype":"NOOP","magic":0}-null
{"keytype":"NOOP","magic":0}-null
{"keytype":"NOOP","magic":0}-null
{"keytype":"NOOP","magic":0}-null
{"keytype":"NOOP","magic":0}-null
{"keytype":"NOOP","magic":0}-null
{"keytype":"NOOP","magic":0}-null
{"keytype":"NOOP","magic":0}-null
{"keytype":"NOOP","magic":0}-null
{"keytype":"NOOP","magic":0}-null

任何想法如何解决此问题。

apache-kafka avro kafka-producer-api confluent-schema-registry
1个回答
0
投票

SCHEMA_REGISTRY_HOST_NAME应该是可解析的主机名,而不是0.0.0.0

同样,请勿在生产者代码中使用0.0.0.0

侦听器是绑定地址,但是只要转发了端口,并且删除了--network host,也可以将它们忽略掉

您可以忽略来自注册表的NOOP消息(它在启动时将其中的两个吐出来以找到该主题的结尾)

© www.soinside.com 2019 - 2024. All rights reserved.