Свойства SSL Kafka Producer для файла YAML - PullRequest
0 голосов
/ 06 августа 2020

Это свойства производителя Kafka в файле YAML. Когда я включаю SSL, мой производитель kafka не работает. Он не может идентифицировать topi c на брокере. Но когда я использую 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());
    }

Это значения, возвращаемые для kafka prodcuer на консоли Spring Boot

ssl.keystore.location = null
ssl.keystore.password = null
ssl.keystore.type = JKS
ssl.protocol = TLS
ssl.provider = null
 ssl.secure.random.implementation = null

1 Ответ

0 голосов
/ 06 августа 2020

Вы создаете свой собственный ProducerFactory bean-компонент, поэтому свойства в application.yml не используются; эти свойства используются Boot при автоматической настройке его bean-компонента.

Вам необходимо самостоятельно установить свойства SSL в вашем bean-компоненте producerFactory().

...