KafkaConsumer在KafkaServer上出错(版本0.9.0.1)

时间:2016-03-18 06:20:42

标签: java apache-kafka kafka-consumer-api

我正在尝试使用Kafka-Client库(0.9.0.1)测试Producer,Consumer。 代理(0.9.0.1)正在服务器上运行,我已经测试了KafkaProducer,没有问题。 但是当我测试 KafkaConsumer 进行轮询时,代理会发出错误消息。

  

[2016-03-18 13:44:19,129] ERROR由于错误而关闭/172.26.132.149的套接字(kafka.network.Processor)   kafka.common.KafkaException:错误的请求类型10           at kafka.api.RequestKeys $ .deserializerForKey(RequestKeys.scala:57)           在kafka.network.RequestChannel $ Request。(RequestChannel.scala:53)           在kafka.network.Processor.read(SocketServer.scala:353)           在kafka.network.Processor.run(SocketServer.scala:245)

消费者测试代码如下。

class ConsumerRunner implements Runnable{
    private KafkaConsumer<String,String> consumer;
    private String topic;
    public ConsumerRunner(String topic,Properties props){
        consumer = new KafkaConsumer<String,String>(props);
        this.topic = topic;
        consumer.subscribe(Arrays.asList(this.topic));
    }
    public void run() {
        while(true){
            ConsumerRecords<String,String> records = consumer.poll(10000);
            for (ConsumerRecord<String, String> record : records)
                 System.out.printf("offset = %d, key = %s, value = %s", record.offset(), record.key(), record.value());
        }
    }

}

我猜测轮询请求包含错误的请求类型密钥,但是当我检查Kafka核心源时,我重新使用了请求类型密钥&#39; 10&#39;被定义为&#39; GroupCoordinatorKey&#39;。我在&#39; kafka.network.RequestChannel.scala &#39;

中发现了可疑代码
   val requestObj =
      if ( RequestKeys.keyToNameAndDeserializerMap.contains(requestId))
        RequestKeys.deserializerForKey(requestId)(buffer)

      else
        null

测试用户还会显示错误消息

  

java.io.EOFException:null at   org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:83)     在   org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71)     在   org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:153)     在   org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:134)     在org.apache.kafka.common.network.Selector.poll(Selector.java:286)     在   org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:256)     在   org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.clientPoll(ConsumerNetworkClient.java:320)     在   org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:213)     在   org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:193)     在   org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:163)     在   org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorKnown(AbstractCoordinator.java:180)     在   org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:886)     在   org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:853)     在   com.medialog.mdt.kafka.KafkaTest $ ConsumerThread.run(KafkaTest.java:61)

有人有想法吗?这是我的问题吗?或其他人? 请帮我。 谢谢。

1 个答案:

答案 0 :(得分:0)

Minkoo

不确定您是否只是尝试为0.9 Kafka代码创建消费者,或者您的kafka消息是否具有导致此问题的特定内容,您是否可以分享更多详细信息。

但如果您只是尝试为0.9编写kafka消费者,那么在Kafka 0.9中就会有新的消费者API。如果您打开使用新的消费者API,请查看此示例https://github.com/sdpatil/KafkaAPIClient/blob/master/src/main/java/com/spnotes/kafka/simple/Consumer.java以获取示例。

苏尼