2019-07-17

dx   近几日,因为公司业务需求的原因,自己又开始转行玩起了java开发工作,配合F&B系统的数据模块的开发工作。 在经过了大量的咨询查阅之后,确定了自己这块本身的项目架构。理解了很多的架构逻辑,知道了多种解决业务问题的具体思路,在最后通过leader,leeYond的领导下,成功的确定了架构的搭建思路与方向。 最后使用kafka这个消息中间组件,来完成整个模块的信息交流问题。 可是在kafka的学习中,自己又遇到了个问题,在确认kafka启动无异常的情况下,producer,可以"正常"的sent数据,而 consumer 无法读出数据。

解决思路:

     排查问题: 首先查阅kafka日志,判定系统是否正常的 接收到了 producer sent的数据。 

    经排查,kafka并未正常接收到数据,而 kafka的sent 返回参数,又是一个Future 对象,随意查阅起来很是麻烦,自己为了节省代码量,就没写这部分,所以只是打印了发送结束的日志,而真正的报错日志就这样子忽略了过去。 

开启spring boot的 的日志 debug 模式,查看详细日志. 经判定,原本部署在公司内网 38 服务器上的6667 端口的kafka,理论上的connect的 192.168.1.38:6667  ,却被解析成了 dxg-ml:6667,而 dxg-ml 是kafka的别名,为啥会被系统默认为连接呢。

自己配置的明明是ip,程序内部却去获取他的别名,那如果生产者所在机器上没有配置这个ip的别名,就不能解析到对应的ip,所以连接失败报错。


最后,解决思路,就是去配置 自己本地电脑的路径指向:

 windows:

C:\Windows\System32\drivers\etc\hosts  

 添加  192.168.1.38   dxg-ml  

linux :

vi /etc/hosts

  添加 192.168.1.38  dxg-ml

问题得以解决。   具体原因尚不明确,可能是kafka的问题。

博客原文:https://blog.csdn.net/maoyuanming0806/article/details/80553632

你可能感兴趣的:(2019-07-17)