首页 > 解决方案 > 为什么生产者在使用 spring-kafka 时更多地调用 Schema 注册表而不是使用生产者缓存?

问题描述

我正在使用 spring-kafka 2.2.8 并且我们正在使用融合模式注册表进行模式验证,因为我们正在发布 avro 消息。

以下是我们在生产者配置中设置模式注册表 URL 的方式。

configs.put(KafkaAvroSerializerConfig.SCHEMA_REGISTRY_URL_CONFIG, schemaRegistryURL);

现在,当我发送 10 条相同类型(相同模式和相同主题)的消息时,我看到对模式注册表进行了 20 次调用,并且每条发送消息对 SR 进行了两次调用,如下所示

HttpURLConnection[]:getOutputStream HttpURLConnection[]:getInputStream

现在我的问题是:

  1. 为什么每条消息都要两次调用 SR?
  2. 为什么模式信息没有被缓存在生产者端?

标签: avrospring-kafkaconfluent-schema-registry

解决方案


显示您的配置。

我刚刚测试过,只看到一个电话;放一个断点CachedSchemaRegistry.register()- 我看到后续调用在缓存中找到“主题”。


推荐阅读