消费kafka数据连接kafka失败问题

问题一:

消费kafka数据 日志为info级别时 卡在下图 处不动 说明连接失败 这里有问题的是 在代码里没有写过主机名(通常 只写url 但是 日志却打印出来了主机名)

调整日志数据级别为debug也只是发现是连接kafka失败  kafka ip地址确认写的是正确的情况下 发现日志显示 error connection to node(kafka集群名)。问题是 并没有在代码中写过 kafka节点名字 只写过ip 。

最后发现问题是

kafka 消费者 消费kafka时 消费者 会根据提供的ip 去找到对应的kafka节点 并返回kafka节点名。然后 会根据节点名 去与kafka进行连接 此时 有一个问题是。如果我们的集群本地没有配置hosts (kafka 节点 与节点名的映射关系)会出现 连接不上的情况 与我们没配置 另一台 集群名的和ip对应关系 直接ssh集群名 的效果基本 相同

解决方式是 编辑/etc/hosts 文件 (可能需要sudo 权限) 设置映射名

问题二: 生产者生产数据时 debug日志报  NOT_ENOUGH_REPLICAS

ack 设为 -1,broker 的 min.insync.replicas 参数起作用(一个典型的场景是,topic 3 副本,客户端设置 acks = -1,服务端设置 topic level 的 min.insync.replicas = 2,这样至少有 2 个副本写入后,broker 才会返回;但是如果 topic 只有 1 个副本,而 acks = -1,min.insync.replicas = 2,就会报 NOT_ENOUGH_REPLICAS 错误); 即分区数如果是1 哪怕不配置min.insync.replicas 也写入不了 。 解决方法 在不改变分区的情况下 那只能把ack 改成 0 或 1 

 


版权声明:本文为a724952091原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。