前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于kafka连接的一个小问题

关于kafka连接的一个小问题

作者头像
我是攻城师
发布2018-05-14 17:34:58
1.7K0
发布2018-05-14 17:34:58
举报
文章被收录于专栏:我是攻城师我是攻城师

最近有一个项目中用到了java api连接kafka的代码,原来测试的时候:bootstrap.servers这个值一直写的是ip,然后生产和消费数据都没有问题,但在预发测试的时候配合运维的需求,把ip要改成域名来访问,结果就启动就出问题了,启动不起来,抛出的异常如下:

我们的kafka的版本是apache 0.9.0.0,然后我第一时间在网上搜索看是否有相关的例子,结果没找到特别明确的问题解决办法,国内的大部分都是说需要改kafka的服务端配置文件,国外的大部分是说三个域名中,有一个域名出错导致不能连接,虽然跟我的case很像,但不是一回事,因为我确定我的三个域名都是正确的。具体可以参考这个kafka的issue: https://issues.apache.org/jira/browse/KAFKA-2657

为了排除是环境的问题,我在自己的电脑上用虚拟机搭了一个三节点的kafka的集群,然后用域名访问,结果竟然能访问通,那就算说明域名也是没问题的,然后我对比了我自己机器上的域名和我们预发布环境的域名,发现我的预发布的域名里面包含了大写字符还有符号-和.的操作符,而我自己的域名完全是小写的英文字母加数字。然后我推测是不是加了特殊字符作为分隔符的原因,然后我分别以及联合测试了.和-组合的域名发现跟这个没关系,那最后就剩下了一种可能,域名里面包含大写字母,果然,在我测试之后发现含有大写字母的域名在kafka连接的时候截取的域名完全是错的,所以导致连接不上,故而就出现了dns解析失败的那个问题。最后把域名改成小写字母的组合后,就可以正常访问。

最后查了一下kafka的client的源码,发现用的是下面的代码方式提取域名的规则:

到这里一切都清楚了,在0.9.0.0的版本是不支持大写的域名访问,最后我查了0.10.0.0的kafka的源码,发现这个bug已经修复了,所以大伙在使用的时候可以注意下这个小问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我是攻城师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档