Скрипт Kafka-python не выполняется должным образом

#python #apache-kafka #kafka-python

#python #apache-kafka #kafka-python

Вопрос:

Я запустил приведенный ниже код в оболочке Python:

 from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='localhost:9092')
future = producer.send('hello-topic', b'Hello, World!')

 

Это отлично работает в том смысле, что потребитель Kafka получает сообщения.

НО…

Запуск его через скрипт ничего не делает. Я упускаю что-то очевидное?

Единственный способ заставить его работать как скрипт — добавить эту строку…

 future.get(timeout=10)
 

Любая помощь будет оценена.

Комментарии:

1. добавьте producer.flush() , и все готово. так что реально, скорее всего, у вас будет цикл и он будет выполняться producer.send много раз. эти сообщения могут быть отправлены или не отправлены во время процесса, но flush гарантирует это. Я думаю future.get() , это также гарантирует, но вы не захотите использовать это для каждого вызова отправки.

Ответ №1:

подробности kafka send() по ссылке : send() является асинхронным. При вызове он добавляет запись в буфер ожидающих отправки записей и немедленно возвращает. Это позволяет производителю объединять отдельные записи для повышения эффективности. Вы можете использовать метод flush() / poll() для немедленной отправки сообщения.