如何为kafka客户端配置代理



我使用kafka客户端库来创建kafka主题的使用者。Kafka代理(生产者(处于受限网络中,因此只有一些IP可以访问该服务。因此,我需要在Kafka客户端(消费者(上配置一个Proxy以便连接。在ConsumerConfig中,可以在Consumer构造函数中传递的内容没有代理条目。

创建消费者的方法:

public static Consumer<Long, String> createConsumer() {
Properties props = new Properties();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, IKafkaConstants.KAFKA_BROKERS);
props.put(ConsumerConfig.GROUP_ID_CONFIG, IKafkaConstants.GROUP_ID_CONFIG);
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, LongDeserializer.class.getName());
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, IKafkaConstants.MAX_POLL_RECORDS);
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "false");
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, IKafkaConstants.OFFSET_RESET_EARLIER);
Consumer<Long, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList(IKafkaConstants.TOPIC_NAME));
return consumer;
}

如何为该消费者配置代理?

Kafka客户端必须直接与代理对话。

任何代理都需要知道每个单独的地址,因此无论如何都无法实现拥有单个负载平衡代理的目的。Kafka协议处理自己的负载平衡和引导。

在这样的环境中,您可以说服网络团队通过SSL Kafka流量,或者安装Kafka REST代理并通过HTTP(S(而不是发送流量

最新更新