繁体   English   中英

为什么需要创建一个Kafka使用者才能连接到Schema Registry?

[英]Why do I need to create a Kafka Consumer to connect to Schema Registry?

前记:我对Kafka还是陌生的。

我试图从架构注册表中获取所有架构,但是我无法仅通过架构注册表客户端来实现。 只有在此之前我实例化KafkaConsumer,它才起作用。

不明白为什么。 这是代码(使用了使用者)。

ConsumerConfig只是具有所有必需配置的一类。 包括架构注册表URL。

Consumer<String, String>  consumer = new KafkaConsumer<String, String>(ConsumerConfig.get());
CachedSchemaRegistryClient client = new CachedSchemaRegistryClient(ConsumerConfig.getSchemaRegistryURL(), 30);
Collection<String> listOfSubjects = client.getAllSubjects();
consumer.close();

没有消费者,我得到:

io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException:由于输入结束,没有内容要映射

对于消费者,一切正常。 我想知道是否有人可以解释为什么会发生这种情况,我是否没有理由让我需要通过使用者连接到实际的Kafka集群才能访问另一个端点上的Schema Registry。

您根本不必创建KafkaConsumer实例。 两者都是完全独立的。

如果只想从SchemaRegistry获取所有主题和架构,则只需创建CachedSchemaRegistryClient实例并调用相关操作即可。

这是一个工作示例:

 private final static Map<String, Schema> schemas = new ConcurrentHashMap<>();
 protected static SchemaRegistryClient schemaRegistryClient;

 public static void main(String[] args) {
       String registryUrl = "http://localhost:8081";
        try {
            schemaRegistryClient = new CachedSchemaRegistryClient(registryUrl, 30);
            System.out.println(schemaRegistryClient);
            Collection<String> subjects = schemaRegistryClient.getAllSubjects();
            System.out.println(subjects);
        } catch (Exception e){
            throw new RuntimeException(e);
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM