YAML 文件的 Kafka Producer SSL 属性

Kafka Producer SSL properties for YAML file

这是 YAML 文件中的 Kafka Producer 属性。 当我启用 SSL 时,我的 kafka 制作人不会 work.Its 无法识别代理上的主题。但是当我使用 PLAINTEXT 时,我的 kafka 制作人可以正常工作。 我是否缺少 SSL 配置的内容。

PS: Bootsrap 服务器对于 SSL 和 PLAINTEXT 是不同的。

spring:
   kafka:
      producer:
        bootstrap-servers: <server name>
        properties:
          acks: all
          retries: 3 
          retry.backoff.ms: 200000
      ssl.protocol: SSL
      ssl.endpoint.identification.algorithm: https 
      ssl:
        keystore-location: keystore.jks
        keystore-password: password

这是我的 Kafka Producer 配置

@Bean
    public ProducerFactory<String, JsonMessage> producerFactory() {
        Map<String, Object> config = new HashMap<>();

        config.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
        config.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        config.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class);
        config.put(ProducerConfig.ACKS_CONFIG, acks);
        config.put(ProducerConfig.RETRIES_CONFIG, retries);
        config.put(ProducerConfig.RETRY_BACKOFF_MS_CONFIG, retryBackoffMs);
        
        


        return new DefaultKafkaProducerFactory<>(config);
    }

    @Bean
    public KafkaTemplate<String, JsonMessage> kafkaTemplate() {
        return new KafkaTemplate<>(producerFactory());
    }

这是在 spring 启动控制台

上为 kafka prodcuer 返回的值
ssl.keystore.location = null
ssl.keystore.password = null
ssl.keystore.type = JKS
ssl.protocol = TLS
ssl.provider = null
 ssl.secure.random.implementation = null

您正在创建自己的 ProducerFactory bean,因此未使用 application.yml 中的属性; Boot 在自动配置其 bean 时使用这些属性。

您需要自己在 producerFactory() bean 中设置 SSL 属性。