檢視了 「How to Install and Run Apache Kafka on Windows? 」 一文後,成功安裝了Kafka服務,但是如何使用呢?如何在其他機器上連線到服務呢?如何傳送訊息,消費訊息呢?
這些內容,檔案中都沒有介紹,所以本文主要是根據此文展示如何安裝,如何生成Topic,如何傳送訊息,消費訊息。 以及在Azure VM中需要修改那些設定後,才能從本地或者其他機器上連線到kafka服務。
參考How to Install and Run Apache Kafka on Windows一文,總的包含六個步驟,這裡我們使用一樣的步驟。
1)在Apache Kafka下載頁面,以 Binary downloads 方式下載 kafka檔案。下載頁面為: https://kafka.apache.org/downloads,本文下載的檔案為 Scala 2.13 - kafka_2.13-3.2.0.tgz
2)解壓檔案到目標資料夾中(資料夾自己選擇,如本文中使用 c:\lbtestfile\kafka)
3)進入Config目錄,修改 zookeeper.properties 檔案中的 dataDir 路徑。在當前路徑的基礎上( C:/lbtestfile/kafka )加上 /zookeeper-data,這樣完整的路徑為:C:/lbtestfile/kafka/zookeeper-data
4)同樣在config資料夾中,修改 server.properties 檔案中的 log.dirs 內容。同樣在當前路徑的基礎上( C:/lbtestfile/kafka )加上 /kafka-logs,這樣完整的路徑為:C:/lbtestfile/kafka/kafka-logs
5)以上操作已經完成了zookeeper和kafka服務的設定,現在開啟一個CMD視窗,進入到kafka資料夾中,開始啟動zookeeper,使用的命令如下:
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
6)現在開啟另一個CMD視窗,同樣進入Kafka資料夾中,啟動Kafka服務,使用命令如下:
.\bin\windows\kafka-server-start.bat .\config\server.properties
注意:在執行 5,6步的時候,都需要安裝Java執行環境,所以如果VM中沒有安裝Java,可以在此處下載:https://www.java.com/en/download/
以上步驟完成後,Kafka服務已經成功啟動。。。
### 第5,6步執行動圖:
建立Topic命令 : .\bin\windows\kafka-topics.bat --create --topic test_topic --bootstrap-server localhost:9092
傳送訊息命令 : .\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test_topic
消費訊息命令 : .\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test_topic --from-beginning
### 演示動畫:
建立Topic命令
傳送和接受訊息:
當把第二部分中生產者(傳送訊息),消費者(消費訊息) 中的localhost修改為VM IP地址後(xxx.xxx.140.73),就可以在其他機器中存取Kafka服務。但在使用中,遇見了下列問題:
這是因為VM的Inbound Rule中並沒有設定開啟從當前環境存取的9092埠,所以需要找到本機的IP地址後,然後在Azure VM 門戶頁面中新增Inbound Rule. 同時,也必須在VM中,關閉Windows作業系統本身的所有防火牆。
生產者解析 kafka 域名時候,解析到 127.0.0.2:9092,IP地址並不是VM的公共IP (本範例中的VM IP地址應為: xxx.xxx.140.73)
而消費端報出的錯誤則能明確的指出,kafka域名無法解析.
要解決以上問題,非常簡單。
經過以上兩步操作後,終於可以從其他機器中遠端存取Kafka服務了。
當在複雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 雲中,恰是如此!