Spring Boot和Kafka:Broker已断开连接

时间:2018-02-09 12:13:50

标签: spring-boot apache-kafka kafka-consumer-api spring-kafka

我已经设置了一个Spring Boot应用程序来接收来自现有和正在工作的Kafka制作人的Kafka消息。设置是标准设置,基于以下内容:https://www.codenotfound.com/spring-kafka-consumer-producer-example.html

未收到消息,并且控制台中会不断显示以下内容:

WARN org.apache.clients.NetworkClient :Bootstrap broker <hostname>:9092 disconnected 

此外,还会记录以下调试消息:

org.apache.common.errors.Timeout: Failed to update metadata after 60000 ms.

以下链接讨论了控制台消息: https://community.hortonworks.com/content/supportkb/150148/errorwarn-bootstrap-broker-6668-disconnected-orgap.html

此处讨论了已记录的消息: https://community.cloudera.com/t5/Data-Ingestion-Integration/Error-when-sending-message-to-topic-in-Kafka/td-p/41440

很可能,第一个问题解决后不会发生超时。

给出的控制台消息的解决方案是将--security-protocol SSL作为参数显式传递给producer或consumer命令。

鉴于我正在收听现有的Kafka经纪人和主题,因此无法更改任何设置。任何更改都必须在Spring Boot端。

是否可以配置application.yml以便--security-protocol SSL向消费者传递参数?此外,有没有人经历过这种情况,还有另一种方法可以使用Spring Boot和Spring Kafka中提供的配置选项解决问题吗?

由于

1 个答案:

答案 0 :(得分:1)

请参阅the documentation

向下滚动到卡夫卡。可以使用

设置任意Kafka属性
spring:
  kafka:
    properties:
      security.protocol: SSL

适用于消费者和生产者(以及2.0中的管理员)。

在即将发布的2.0版本(目前为RC1)中,还有

spring:
  kafka:
    properties:
      consumer:
        some.property: foo

表示仅适用于消费者的属性(对于生产者和管理员也类似)。