如何告诉KafkaAvroSerializer与Schema Registry的连接必须通过代理?

时间:2019-12-16 12:04:16

标签: java apache-kafka confluent-schema-registry

我尝试通过curl调用指出我的请求:

架构注册表调用,无需建立任何代理: curl -X GET -i https://schema-registry-url:8081/subjects/someTopic-value/versions/

具有隧道代理的架构注册表调用 curl -X GET -i https://schema-registry-url:8081/subjects/someTopic-value/versions/ --proxy http-proxy.net:3128

我的Kafka连接是通过Spring-Boot应用程序实现的。作为序列化器,我有KafkaAvroSerializer,这意味着架构注册表。这是我的producerConfig的概述:

`
 public Map<String, Object> producerConfig(){
    Map<String, Object> props = new HashMap<>();
    props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokerAddress);
    props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
    props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class.getName());
    props.put(KafkaAvroSerializerConfig.SCHEMA_REGISTRY_URL_CONFIG, schemaRegistry);
    props.put(ProducerConfig.CLIENT_ID_CONFIG, groupId);
    return props;
  }
`

但是,此配置不会通过隧道传输HTTP代理。因此,这就像第一个curl调用。

问题: 如何在生产者配置中指定架构注册客户端应通过代理?

->是否有可以覆盖的方法?

->还有另一个参数可以设置吗?

感谢您的帮助和想法。

2 个答案:

答案 0 :(得分:0)

也许尝试在Spring Boot应用程序的JVM设置上进行设置,例如,如果您在IntelliJ Idea中进行此设置,则需要在运行配置中添加JVM args。

答案 1 :(得分:0)

confluentinc团队最近扩展了图书馆。

在此处检查其他代理配置的更改,这些更改将用于连接到架构注册表实例:

https://github.com/confluentinc/schema-registry/pull/1144