最近,我们开始将Kafka堆栈从0.8.2版本升级到2.2.0。之前我们也使用过Apache Kafka,但现在我们正尝试迁移到Confluent Platform。升级后,我们无需更改任何代码(我们使用的是kafka_2.9.2版本0.8.1.1,而kafka-clients版本为0.8.1.1)。
除KafkaStream之外,所有使用KafkaProducer写入Kafka的代码都可以正常工作。当我尝试使用KafkaStreams从主题中读取数据时,它似乎永远处于阻塞状态。
一旦我从KafkaStreams创建一个ConsumerIterator,它将立即阻塞直到发生超时。我要去哪里错了?
我尝试将auto.offset.reset属性设置为“最小”和“最大”,并同时在另一个进程中启动了KafkaProducer以将消息写入该主题。但是KafkaStreams没用。
public static void main(String...args) {
Properties properties = new Properties();
properties.put("zookeeper.connect", "localhost:2181");
properties.put("group.id", "test-group");
properties.put("auto.offset.reset", "smallest");
ConsumerConfig consumerConfig = new ConsumerConfig(properties);
ConsumerConnector consumerConnector = Consumer.createJavaConsumerConnector(consumerConfig);
Map<String, Integer> topicCountMap = new HashMap<String, Integer>();
topicCountMap.put("test_topic", new Integer(1));
Map<String, List<KafkaStream<byte[], byte[]>>> consumerMap = consumerConnector
.createMessageStreams(topicCountMap);
KafkaStream<byte[], byte[]> stream = consumerMap.get("jobs_google_api").get(0);
ConsumerIterator<byte[], byte[]> it = stream.iterator();
List<String> messages = new ArrayList<>();
while (it.hasNext())
messages.add(new String(it.next().message()));
System.out.println(messages);
}```