Нет сообщений, отображаемых потребителем при выполнении сценариев Python производителя и потребителя - PullRequest
1 голос
/ 18 июня 2019

Я установил Apache Kafka на сервере Ubuntu и протестировал его, выполнив первые пять шагов, упомянутых в https://kafka.apache.org/quickstart, и все заработало нормально.

Затем я приступил к установке kafka-python 1.4.6 для тестирования на python и написал простые сценарии для производителя и потребителя.

Моя конфигурация для слушателей
listeners = PLAINTEXT: // localhost: 9092
advertised.listeners = PLAINTEXT: // localhost: 9092

Вот сценарии

consum.py

from kafka import KafkaConsumer

consumer = KafkaConsumer('my-topic')
for message in consumer:
        print (message)

prod.py

from kafka import KafkaProducer
from kafka.errors import KafkaError

producer = KafkaProducer(bootstrap_servers='localhost:9092',api_version=(0, 10, 1))

producer.send('my-topic', b'Hello')

При запуске сценариев сценарий производителя завершается немедленно, и пользовательский сценарий не печатает никаких сообщений

Anyидеи, что я мог бы упустить здесь.
Спасибо

1 Ответ

1 голос
/ 18 июня 2019

Проблема в том, что ваш скрипт производителя завершает работу перед отправкой сообщения.После запуска send() Python достигает последней строки вашего скрипта и немедленно останавливается.

Вам нужно вызвать flush(), чтобы заставить среду выполнения ждать отправки всех сообщенийдо завершения.

from kafka import KafkaProducer
from kafka.errors import KafkaError

producer = KafkaProducer(bootstrap_servers='localhost:9092',api_version=(0, 10, 1))

producer.send('my-topic', b'Hello')

producer.flush()

Кроме того, ваша логика выглядит хорошо (и работал для меня).

...