【问题标题】:How can I tell KafkaAvroSerializer that the connection to the Schema Registry must be through a proxy?我如何告诉 KafkaAvroSerializer 到 Schema Registry 的连接必须通过代理?
【发布时间】:2020-04-08 21:30:51
【问题描述】:

我尝试通过 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 调用。

问题: 如何在我的生产者配置中指定 schema-registry 客户端应该通过代理?

-->有可以覆盖的方法吗?

-->还有其他参数可以设置吗?

感谢您的帮助和想法。

【问题讨论】:

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


    【解决方案1】:

    confluentinc 团队最近对库进行了扩展。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 很遗憾,这是不可能的,因为应用程序还包含其他 HTTP 调用,这些调用并非都允许通过代理。
      猜你喜欢
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      相关资源
      最近更新 更多