[英]Kafka Consumer diamond operator cannot infer arguments
我正在创建一个 Kafka 消费者。 提到的一段代码在我的示例 POC 项目上运行良好。
不知何故,当我在我的项目应用程序中使用它时,它会给出错误,无法解析 Diamond Operator。
项目代码
private Consumer<Long, String> createConsumer(String topicName) {
final Properties props = new Properties();
// todo: use @Value instead of hardcodes
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(ConsumerConfig.GROUP_ID_CONFIG, "application");
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, LongDeserializer.class.getName());
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "false");
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest");
final Consumer<Long, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList(topicName));
return consumer;
}
错误快照
您的代码中不需要菱形运算符。 将错误行更改为此
KafkaConsumer consumer = new KafkaConsumer(props);
返回类型应从Consumer<Long, String>
更改为KafkaConsumer
。 Rest 所有代码都很好,您可以按原样使用消费者。
只要您导入不是KafkaConsumer
实现的接口的java.util.function.Consumer
(具有一种通用类型),这是可以重现的。 您需要导入正确的:
org.apache.kafka.clients.consumer.Consumer
这个有两种通用类型,它应该没有编译错误。
final Consumer<Long, String> consumer = new KafkaConsumer<>(props);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.