Как обеспечить настройку SSL для spring-cloud-starter-bus-kafka 1.2.0.RELEASE

Я использую Spring Boot 1.5.6.RELEASE, Spring Cloud Config 1.3.2.RELEASE и Spring Cloud Starter Bus (Kafka) 1.2.0.RELEASE, а версия Kafka - 0.10.1.1. Я пытаюсь настроить его на использование двух брокеров с поддержкой ssl, но в итоге получаю повторяющуюся последовательность предупреждающих сообщений (по одному для каждого брокера), которая выглядит следующим образом:

Bootstrap broker broker1:9993 disconnected
Bootstrap broker broker2:9993 disconnected

В моей конфигурации у меня есть (только соответствующая часть включена здесь):

spring:
    cloud:
        stream:
            kafka:
                binder:
                    zkNodes: zkhost1:2181,zkhost2:2181
                    brokers: broker1:9993,broker2:9993
                    configuration:
                        security.protocol: SSL
                        ssl.enabled.protocols: TLSv1.1,TLSv1.2
                        ssl.endpoint.identification.algorithm: HTTPS

Однако, когда ProducerConfig и ConsumerConfig выкладывают свои значения конфигурации, они оба указывают:

security.protocol = PLAINTEXT
ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]
ssl.endpoint.identification.algorithm = null

Также я получаю следующие предупреждающие сообщения:

The configuration 'key.deserializer' was supplied but isn't a known config.
The configuration 'value.deserializer' was supplied but isn't a known config.
The configuration 'ssl' was supplied but isn't a known config.
The configuration 'security' was supplied but isn't a known config.

Мне нужно добавить конфигурацию для хранилища доверенных сертификатов, хранилища ключей, их паролей и типов хранилищ, и я также хотел бы знать, как предоставить их без жесткого кодирования в конфигах yaml. Мой предпочтительный способ - заполнить эти свойства конфигурации свойствами jvm.

Есть идеи, что я делаю не так?

Вот интересное обновление после попытки разных вещей. Если я создаю класс @Configuration, аннотированный @EnableKafkaStreams, я могу создать StreamsConfig со всеми различными свойствами, настроенными, как указано, но это создает нового и отдельного производителя и потребителя. Производитель и потребитель весеннего облачного автобуса все еще не настроен по умолчанию.

1 ответ

Решение

Если я последую совету на github и добавлю свойства в application.properties в банке, а не настраивать их через spring-cloud-config, все работает. Те же самые свойства конфигурации, настроенные с помощью spring-cloud-config, вызывают сбой конфигурации, так как она не похожа на скобки в именах свойств. Сообщения об ошибках, которые он сообщает, напрямую не жалуются на неправильно сформированные ключи свойств. Когда вы выполняете эту настройку только через подпружиненную загрузку, кажется, что она работает нормально. Итак, похоже, что существует различие в разборе конфигурации между spring-boot и spring-cloud-config.