kafka 0.9.0.1 java_Kafka 0.9.0.1 Java使用者卡在awaitMetadataUpdate()中

我正在尝试让一个简单的Kafka Consumer使用Java API v0.9.0.1来工作.我正在使用的kafka服务器是一个docker容器,也运行0.9.0.1版.以下是消费者代码:

public class Consumer {

public static void main(String[] args) throws IOException {

KafkaConsumer consumer;

try (InputStream props = Resources.getResource("consumer.props").openStream()) {

Properties properties = new Properties();

properties.load(props);

consumer = new KafkaConsumer<>(properties);

}

consumer.subscribe(Arrays.asList("messages"));

try {

while (true) {

ConsumerRecords records = consumer.poll(100);

for (ConsumerRecord record : records)

System.out.println("Message received: " + record.value());

}

}catch(WakeupException ex){

System.out.println("Exception caught " + ex.getMessage());

}finally{

consumer.close();

System.out.println("After closing KafkaConsumer");

}

}

}

但是,启动使用者时,它将调用上面的poll(100)方法,并且永不返回.进行调试,似乎永远无法在org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient中运行以下方法:

public void awaitMetadataUpdate() {

int version = this.metadata.requestUpdate();

do {

this.poll(9223372036854775807L);

} while(this.metadata.version() == version);

}

(这两个版本和this.metadata.version()始终总是== 2).另外,尽管它没有引发任何错误,但是我的Java生产者发出的消息从未出现在队列中.我已经验证了使用命令行kafka工具,我可以从队列发送和接收消息.

任何人都知道这是怎么回事吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值