1.前言
系统环境:Spring+SpringMVC+Mybatis+Maven
这里系统环境不一定要跟我一样,但是建议使用maven,方便管理jar包。
现阶段只是实现了简单的java对接kafka,所以会比较简单,要是有大神路过请指正,或者给些更深入的指导。
2.简单的实现java对接kafka
2.1.Kafka学习网站
* Kafka的安装和深入学习:
http://orchome.com/kafka/index <http://orchome.com/kafka/index>
这个链接基本是翻译kafka的官网,对于英语不好的同学还是很有帮助的。而且这个网站还有ngnix的学习参考。
* Kafka与Spring集成:
https://www.cnblogs.com/wangb0402/p/6187796.html
<https://www.cnblogs.com/wangb0402/p/6187796.html>
感谢这个博文的作者:名字可以起这么长,我基本是参考了他的文档和代码。但是不得不说还是踩了很多坑,这也是我写这个博文的原因,避免后来人走弯路。他的博文里面有个jar包引用应该是有问题的:spring-kafka的vision我用的是1.2.0.RELEASE。
2.2.对接过程中的注意点
2.2.1.我的代码
Git:https://gitee.com/Coline/ssm.git <https://gitee.com/Coline/ssm.git>
这个代码主要是我用于学习新知识用的,大多是技术的堆砌,欢迎大家拍砖。Kafka相关的代码在ssm-kafka中,配置文件在ssm-all的resources/conf/kafka中。
2.2.2.开始排雷
* Kafka配置文件:server.properties
路径:kafka安装目录/config/server.properties
配置项:advertised.listeners=PLAINTEXT://【kafka服务器ip】:【kafka服务端口】
这里默认是没有配置的,所以需要大家手动加。
解释:"PLAINTEXT"表示协议,可选的值有PLAINTEXT和SSL,hostname可以指定IP地址,也可以用"0.0.0.0"表示对所有的网络接口有效,如果hostname为空表示只对默认的网络接口有效,也就是说如果你没有配置advertised.listeners,就使用listeners的配置通告给消息的生产者和消费者,这个过程是在生产者和消费者获取源数据(metadata)。如果都没配置,那么就使用java.net.InetAddress.getCanonicalHostName()返回的值,对于ipv4,基本就是localhost了。然后生产者就会一直卡死,没有反应,原因是你的客户端连接的是127.0.0.1:9092,而不是你期望的服务器的地址。因此只需要把listeners的地址修改成你的服务器地址即可。
--该解释转自:https://www.jianshu.com/p/71b295e1df4f
这里踩了很久的坑,就是本机能生产消费,java代码不行,一直以为是代码问题,结果是配置问题。
* Kafka配置文件:server.properties
路径:kafka安装目录/config/ consumer.properties
配置项:group.id
这个配置项要与java的生产者和消费者配置项相对应。
* java配置文件
我是参照别人的代码使用KafkaMessageListenerContainer作为kafka消费者监听。
配置文件在我的代码: ssm-all/resource/conf/kafka/kafkaContext-kafkaConsumer.xml
<constructor-arg name="topics"value="ssm_java"/>
注意这个配置项是topic,之前参照别人的代码并没有这个name,导致弄了好久,一直没注意这个配置,其实当时自己心里也觉得怪怪的,消费不配置topic他怎么知道消费谁,后来偶然间发现的,当时好开心。
* Java配置文件
ssm-all/resource/conf/kafka/kafkaContext-kafkaConsumer.xml和ssm-all/resource/conf/kafka/kafkaContext-kafkaProducer.xml
这两个要和监听实现类对应
3.后记
kafka的spring对接我只讲这些,因为大部分是参照别人的,也没有太多自己的创造,这里只说一些踩过的坑,后面会继续学习。
热门工具 换一换