我正在用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是我所知的自定义名称。不知道这里的配置值是什么。
答案 0 :(得分:2)
看起来您正在尝试使用仅在Kafka 0.9+中提供的新消费者API。要使用较旧的API,您必须从kafka.javaapi.consumer.*
包而不是新的org.apache.kafka.clients.consumer
包导入类。
consumer.subscribe
和consumer.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 。