卡夫卡0.8.2消费者

时间:2016-03-31 01:49:36

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

我正在用Java实现一个简单的Kafka使用者。这是代码:

public class TestConsumer {

    public static void main(String []a) throws Exception{
        Properties props = new Properties();
        props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("partition.assignment.strategy", "round-robin");
        props.put("group.id", "test");
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:9092");

        KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props);

        try{
            consumer.subscribe("ay_sparktopic");
            Map<String, ConsumerRecords<String, String>> msg = consumer.poll(100);
            System.out.println(msg);                
        }catch(Exception e){
            System.out.println("Exception");
        }
    }
}

以上消费者提供以下错误消息:

  

16/03/30 18:01:07 WARN ConsumerConfig:配置group.id = test已提供,但不是已知的配置。   16/03/30 18:01:07 WARN ConsumerConfig:提供了配置partition.assignment.strategy = round-robin但不是已知的配置。

我在线查看的任何文档都提供了范围或圆形作为可能的分配策略,而groupId是我所知的自定义名称。不知道这里的配置值是什么。

2 个答案:

答案 0 :(得分:2)

看起来您正在尝试使用仅在Kafka 0.9+中提供的新消费者API。要使用较旧的API,您必须从kafka.javaapi.consumer.*包而不是新的org.apache.kafka.clients.consumer包导入类。

consumer.subscribeconsumer.poll与新API相关,因此如果您真的想使用旧API,则需要相应地更改代码。如果您想要使用新的消费者API,则需要运行Kafka 0.9或更高版本。

答案 1 :(得分:0)

使用以下依赖项可解决此问题。

libraryDependencies += "org.apache.kafka" % "kafka_2.11" % "0.9.0.0"

即使你以前的版本运行例如 kafka 0.8.2.1