一、连接超时问题
问题描述
2018-12-11 17:14:04.956 ERROR 19888 --- [nio-8080-exec-4] o.s.k.support.LoggingProducerListener : Exception thrown when sending a message with key='null' and payload='{"houseId":24,"operation":"index","retry":0}' to topic house_build:
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
在网上找了下,总结的情况大概有:
可能是kafka配置没配好,kafka配置没有对外开放host、port
端口号不统一
没有配置/etc/hosts
版本不兼容(网上有版本说值支持0.11.x.x的版本)
我的是在端口号那里解决了,把advertised.listeners那里的端口号打开,然后在windows上用telnet命令远程连接(出现ip框表示连接成功,当然需要首先打开telent服务)
二、 启动kafka时报错
原因:
网上也有很多说法,有的说是因为权限,有的说是因为占用,我更倾向于被占用了,因为是重启的时候的问题,应该是关闭的时候没有杀死进程
解决办法:
直接删除kafka的日志文件,同时杀死该进程
rm -rf /tmp/kafka-logs(文件为日志文件,可以在server.properties中修改位置)
ps ef | grep kafka
kill -9 进程
最后重启kafka
三、基于Kafka做二次开发时,生产者可以产生消息,通过kafka命令行也可以消费信息,但是通过代码无法获取消息,查看kakfa日志有如下错误信息
ERROR [KafkaApi-0] Number of alive brokers '0' does not meet the required replication factor '1' for。。。。。
问题原因:
此类问题在测试环境中容易出现,由于节点资源限制,brokers实例比offset topic副本数量少时出现此问题。
解决方案:
在server.properties中增加brokers实例数或者减少offset topic副本数量,配置项名称:offsets.topic.replication.factor =1(需要重启kafka服务)