簡體   English   中英

在 WSL2 Ubuntu 中使用 Python 的 Kafka 消費者/生產者

[英]Kafka consumer/producer with Python in WSL2 Ubuntu

這是此線程的后續問題。

根據線程的建議,我的 Python 代碼不起作用的可能原因是因為我要連接到 WSL2 中的遠程服務器。 WSL2 Ubuntu 可能存在未知問題。

因此,我正在使用以下兩種在 WLS2 Ubuntu 本地(即通過localhost:9092 )內進行通信的方法來測試該假設:

請注意,對於以下兩種方法,我已經在一個終端( T1 )中運行了 zookeeper:

bin/zookeeper-server-start.sh config/zookeeper.properties

方法 1 :在控制台中與生產者/消費者通信,如以下命令所述(取自本教程

第 1 步:創建主題TutorialTopic (在終端T2中)

~/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TutorialTopic

步驟2 :在終端T3中產生一條消息

echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic

第三步:在另一個終端T4消費消息

~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TutorialTopic --from-beginning

結果:我在終端 T4 中看到一條消息Hello, World

方法 2 :通過兩個 Python 模塊進行通信, consumer.pyproducer.py ,如本教程所示

步驟 1 :在終端T5中創建主題sample

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic sample

步驟2 :在終端T6運行生產者模塊

producer.py
from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers='localhost:9092')
producer.send('sample', value='Hello, World!')

第 3 步:在終端T7中使用該消息

consumer.py
from kafka import KafkaConsumer

consumer = KafkaConsumer('sample', bootstrap_servers=['localhost: 9092'])

for message in consumer:
    print (message.value)

結果T7上沒有任何顯示。 Python 控制台卡在運行中,除非我執行Ctrl+C 不會產生其他錯誤或消息。 與我得到No Broker錯誤的前一個線程不同。

但是,在這種方法 2 中,如果我通過以下命令在T6中生成消息,我會在消費者終端T7中意外地收到它:

echo "Hello" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic sample

我的最終目標是通過 Python 應用程序從遠程服務器使用消息並使用 WSL2 Ubuntu。 這個實驗似乎暗示 WSL2 不是問題。 如果有人可以啟發這里發生的事情。

通過命令產生消息......我驚訝地在消費者終端T7中收到它

這並不奇怪,因為在啟動消費者循環,您沒有在 Python 生產者應用程序中調用producer.flush()producer.close()

控制台生產者通過在 future- source上調用 get() 來阻塞每條記錄,從而有效地刷新其緩沖區

或者,如果您想查看先前發送的記錄,您在 Python 消費者中缺少 --from --from-beginning的匹配選項


最終,在同一個網絡適配器/子網中測試本地客戶端/服務器並不能幫助解決外部網絡連接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM