spring cloud stream starter stream kafka consumer SSL配置

时间:2017-09-18 19:36:27

标签: spring-cloud-stream

Spring cloud stream starter kafka在连接消费者时没有加载配置。以下是我在调试模式下运行时在控制台中看到的配置:

    spring:
     cloud:
      stream:
       bindings:
         <binding configuration>
       kafka:
        binder:
         autoCreateTopics: false
         brokers: <list of kafka brokers>
         defaultBrokerPort: <default port>
        configuration:
         security:
          protocol: SSL
         ssl:
          truststore:
           location: <path to cliend truststore jks>
           password: <password>
           type: JKS
          keystore:
           location: <path to cliend keystore jks>
           password: <password>
           type: JKS
          key:
           password: <password>
          enabled:
           protocols: TLSv1.2,TLSv1.1,TLSv1

我有以下配置部分的bootstrap yml文件

function savelike(storyid)
{
             alert("<?php echo site_url('Welcome/savelikes');?>");
             $.ajax({
                type: "POST",
                url: "<?php echo site_url('Welcome/savelikes');?>",
                data: "Storyid="+storyid,
                success: function (response) {
                 $("#like_"+storyid).html(response+" Likes");

                }
            });
}

如果我正确配置,有人可以告诉我吗?我能够使用spring-kafka生成器成功地向主题发布消息。在我考虑在春天kafka写作消费者之前,我想确保我做得正确。

3 个答案:

答案 0 :(得分:2)

我不认为您可以将安全性和协议(例如)放在您提供的示例yaml中的两个级别,因为Kafka正在寻找security.protocolssl.truststore.location等属性。因此,在创建yaml文件时,请在层次结构中的同一级别提供所有与安全性相关的kafka属性。否则,spring将它们作为键/值对。

spring:
     cloud:
      stream:
       bindings:
         <binding configuration>
       kafka:
        binder:
         autoCreateTopics: false
         brokers: <list of kafka brokers>
         defaultBrokerPort: <default port>
        configuration:
         security.protocol: SSL
         ssl.truststore.location: <path to cliend truststore jks>
         ssl.truststore.password: <password>
         ssl.truststore.type: JKS
...

答案 1 :(得分:1)

配置在将其更改为https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/129

中的报告方式后加载

感谢stackoverflow推荐关于上述git问题的帖子:)

答案 2 :(得分:0)

最近我也经历了同样的问题。不幸的是,sobychacko的答案对我没有用。尽管这种方法是正确的,但我认为错误在于放置“配置”道具的缩进处。

请参阅此链接中的3.4.1部分-https://docs.spring.io/autorepo/docs/spring-cloud-stream-binder-kafka-docs/1.1.0.M1/reference/htmlsingle/

当我将“ configuration”道具放置在与 spring.cloud.stream.binder.brokers,即

spring:   
  cloud:
    stream:
      binder:
        brokers:
        configuration:
         security:
          protocol: SSL
         ssl:
          truststore:
           location: <path to cliend truststore jks>
           password: <password>
           type: JKS
          keystore:
           location: <path to cliend keystore jks>
           password: <password>
           type: JKS
          key:
           password: <password>
          enabled:
           protocols: TLSv1.2,TLSv1.1,TLSv1

这样,我可以看到日志中相应的字段。