Kafka与Spring对接踩过的坑

 

1.前言

    系统环境:Spring+SpringMVC+Mybatis+Maven

    这里系统环境不一定要跟我一样,但是建议使用maven,方便管理jar包。

    现阶段只是实现了简单的java对接kafka,所以会比较简单,要是有大神路过请指正,或者给些更深入的指导。

2.简单的实现java对接kafka

2.1.Kafka学习网站

  • Kafka的安装和深入学习:

        http://orchome.com/kafka/index

        这个链接基本是翻译kafka的官网,对于英语不好的同学还是很有帮助的。而且这个网站还有ngnix的学习参考。

  • Kafka与Spring集成:

    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

    这个代码主要是我用于学习新知识用的,大多是技术的堆砌,欢迎大家拍砖。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对接我只讲这些,因为大部分是参照别人的,也没有太多自己的创造,这里只说一些踩过的坑,后面会继续学习。

猜你喜欢

转载自blog.csdn.net/u011294519/article/details/80503556