如何为 spring-cloud-starter-bus-kafka 1.2.0.RELEASE 提供 SSL 配置

How to provide SSL configuration for 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 属性填充这些配置属性。

知道我做错了什么吗?

在尝试了各种方法后,这里有一个有趣的更新。如果我创建一个用@EnableKafkaStreams 注释的@Configuration class,我可以创建一个StreamsConfig,其中所有的各种属性都按指定配置,但这会创建一个新的独立的生产者和消费者。 spring cloud bus kafka producer 和 consumer 仍然没有超出默认配置。

如果我按照 github 的建议将 application.properties 中的属性放在 jar 中,而不是通过 spring-cloud-config 配置它们,它就可以工作。通过 spring-cloud-config 配置的相同配置属性会导致配置崩溃,因为它似乎不喜欢 属性 名称中的括号。不过,它报告的错误不会直接抱怨格式错误的 属性 键。当您仅通过 spring-boot 执行此配置时,它似乎工作得很好。因此,spring-boot 和 spring-cloud-config.

之间的配置解析似乎存在差异