赞
踩
最初问题: 我在linux服务器启动了一个kafka, 可以在服务器中使用kafka-console-producer给kafka-console-consumer发消息, 且consumer能接受成功, 在/server.properties 我的listener地址为listeners=PLAINTEXT://:30059, 30059端口是开放的, 我可以在windows系统telnet通这个端口, 但是我使用代码给consumer发消息的时候, producer的消息发送会被阻塞(2min后会提示超时), 报错如下:
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for test-0:120000 ms has passed since batch creation
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.valueOrError(FutureRecordMetadata.java:97)
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:65)
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:30)
at KafkaProducerTest.main(KafkaProducerTest.java:35)
Caused by: org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for test-0:120000 ms has passed since batch creation
懵逼中…
换成kafka自带的windows命令行再试, 发现神奇之处: 他会把kafka的服务器ip映射成一串乱码host
解决思路 :
修改hosts文件:
windows系统为: C:\Windows\System32\drivers\etc下的hosts文件
linux系统为: /etc/hosts (发现linux也有这个问题)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。