kafka基礎使用方法(java)

2021-08-04 23:09:44 字數 1993 閱讀 9365

producer/comsumer demo源**見:

建立topic

分析:雖然kafka對外開放的api中沒有建立topic的方法,但是實驗證明,當producer傳送乙個新topic訊息到broker時會自動建立乙個對應的topic。

不過自動建立的topic使用的是預設配置,若有需要還需手動修改配置。

傳送資料到kafka

(紅框內的訊息需要手動輸入)

分析:kafka預設通過9092埠與producer和consumer進行資料互動。正式使用時該步驟由producer端的指令碼替代。

建立consumer消費資料

分析:成功讀出test中的資料。正式使用時該步驟由consumer端的指令碼替代。

別用localhost!!!

問題再現:最開始按照官方文件的指引,使用一下命令來建立乙個測試用的producer

結果出現上圖中的問題:

org.apache.kafka.common.errors.timeoutexception:

failed to update metadata after 60000 ms.

對於該問題作出一下猜想:認為問題出在zookeeper對於某ip的許可權限制上面,換句話說官方文件中的demo應該是在單機環境中的,此時zookeeper與kafka在同一機器上,zookeeper對該機器localhost有許可權更新metadata,而在使用多節點集群時,zookeeper為了防止傳輸出現偏差,禁止了localhost的相應許可權。

要驗證以上猜想,需要在單機環境下進行測試,沒時間做。再說吧。╮(╯_╰)╭

解決方法:改用特定ip即可,就這麼簡單,但是問題找了很久,一點辦法都木有。

總結:別用localhost!!有必要熟悉一下zookeeper的原理。

Java基礎之static使用方法

1 靜態方法可以隨意調取靜態成員,但不可以隨意調取非靜態成員 2 靜態方法可以通過建立物件,來調取非靜態成員 調取 物件名.非晶體成員名稱 3 普通方法可以隨意調取靜態和非晶體成員 先執行靜態初始化塊,在執行普通初始化塊,最後只是構造方法初始化塊 並且靜態初始化塊只能被執行一次 案例1 public...

java基礎小結 附String的使用方法

1.乙個字串一旦建立,將無法改變,每次new個字串就產生新的物件,儘管內容相同也是不一樣的,比較時可以使用equal 方法 2.判斷乙個字串中是否含有某字元,使用str.chat 例如 判斷s中是否含有a,s.chat i a 使用for迴圈遍歷 3.使用 stringbuilder 或 strin...

Mybatis基礎使用方法

1.匯入約束 2.導包 資料庫連線驅動包 mybatis包 備註 記得buildpath引用包3.建立mybatis管理的表單物件 例如 建立user.xml 3.1.宣告文件型別 3.2.標籤 屬性 namespace用於區分不同的表 id用於區分操作 parametertype引數型別 resu...