【问题标题】:o.apache.kafka.clients.NetworkClient - Bootstrap broker <hostname>:9092 disconnectedo.apache.kafka.clients.NetworkClient - 引导代理 <主机名>:9092 已断开连接
【发布时间】:2017-09-20 13:56:49
【问题描述】:

我正在尝试使用 Spring Kafka 消费者使用来自 Kafka 主题的消息。但是我看到以下错误。当我使用本地机器中设置的 kafka 主题的消息时,这可以正常工作 -

[org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] 警告 o.apache.kafka.clients.NetworkClient - 引导代理 &lt;hostname&gt;:9092disconnected

我可以使用命令行读取消息

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic ctp_verbose_amcs --from-beginning --zookeeper localhost:2181

代码

@EnableKafka
@Configuration
public class KafkaConsumerConfig {

    private static Logger logger = LoggerFactory.getLogger(KafkaConsumerConfig.class);

    @Value(value = "${kafka.bootstrapAddress:localhost:9092}")
    private String bootstrapAddress;

    @Value(value = "${groupId:amcs-tas}")
    private String groupId;

    @Bean
    public ConsumerFactory<String, Map<String, Object>> consumerFactory() {
        Map<String, Object> props = new HashMap<>();
        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress);
        props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
        return new DefaultKafkaConsumerFactory<>(props, new StringDeserializer(), new ConciseMessageDeserializer());
    }

    @Bean
    public ConcurrentKafkaListenerContainerFactory<String, Map<String, Object>> kafkaListenerContainerFactory() {
        ConcurrentKafkaListenerContainerFactory<String, Map<String, Object>> factory = new ConcurrentKafkaListenerContainerFactory<>();
        factory.setConsumerFactory(consumerFactory());
        return factory;
    }
}

服务器日志中的错误消息

[2017-09-20 14:33:44,448] ERROR Closing socket for <hostname>:9092-10.251.127.31:51014 because of error (kafka.network.Processor)
kafka.network.InvalidRequestException: Error getting request for apiKey: 3 and apiVersion: 2
        at kafka.network.RequestChannel$Request.liftedTree2$1(RequestChannel.scala:95)
        at kafka.network.RequestChannel$Request.<init>(RequestChannel.scala:87)
        at kafka.network.Processor$$anonfun$processCompletedReceives$1.apply(SocketServer.scala:488)
        at kafka.network.Processor$$anonfun$processCompletedReceives$1.apply(SocketServer.scala:483)
        at scala.collection.Iterator$class.foreach(Iterator.scala:893)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
        at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
        at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
        at kafka.network.Processor.processCompletedReceives(SocketServer.scala:483)
        at kafka.network.Processor.run(SocketServer.scala:413)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Invalid version for API key 3: 2
        at org.apache.kafka.common.protocol.ProtoUtils.schemaFor(ProtoUtils.java:31)
        at org.apache.kafka.common.protocol.ProtoUtils.requestSchema(ProtoUtils.java:44)
        at org.apache.kafka.common.protocol.ProtoUtils.parseRequest(ProtoUtils.java:60)
        at org.apache.kafka.common.requests.MetadataRequest.parse(MetadataRequest.java:96)
        at org.apache.kafka.common.requests.AbstractRequest.getRequest(AbstractRequest.java:48)
        at kafka.network.RequestChannel$Request.liftedTree2$1(RequestChannel.scala:92)
        ... 10 more

【问题讨论】:

  • 你真的看到&lt;hostname&gt; 吗?还是您混淆了实际的主机名?如果是前者,您的财产价值不高;如果是后者,则可能是网络问题。
  • 是的,我看到了实际的主机名。我在创建这篇文章时删除了它。
  • 检查服务器日志并查看网络跟踪。
  • 用真正的代理试试控制台消费者。
  • 对不起,Gary,真正的经纪人是什么意思?我也添加了在服务器日志中看到的错误。

标签: java spring spring-boot spring-kafka


【解决方案1】:

Caused by: java.lang.IllegalArgumentException: Invalid version for API key 3: 2

您的客户端版本与代理版本不兼容。

有关兼容性矩阵,请参阅底部的the project page

【讨论】:

  • 谢谢加里,我现在就去看看
  • 我正在使用这个版本的 kafka - kafka_2.11-0.10.0.0。我看到在兼容客户端的页面列表中提供了 spring-kafka 库。我使用了以下内容,我不再看到错误,但似乎没有从主题中消耗消息。我应该为我提供的 kafka 版本使用不同版本的客户端吗?编译组:'org.apache.kafka',名称:'kafka-clients',版本:'0.10.2.0' 编译组:'org.springframework.kafka',名称:'spring-kafka',版本:'1.2。 2.释放'
  • 不知道10.2的客户端是否兼容10.0的broker。听起来好像不是。检查 Kafka 文档。
  • 嗨,Gary,很抱歉更新同一线程中的多个错误。如果需要,我可以创建一个新问题。我启用了调试,我看到这个错误“Group coordinator lookup for group amcs-tas failed: The group coordinator is not available.”
  • 我建议您为此提出一个新问题。
猜你喜欢
  • 2021-06-23
  • 2018-02-16
  • 2018-12-06
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
相关资源
最近更新 更多