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對接我只講這些,因爲大部分是參照別人的,也沒有太多自己的創造,這裏只說一些踩過的坑,後面會繼續學習。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章