Как программно проверить, работает ли Kafka Broker в Python - PullRequest
2 голосов
/ 15 апреля 2020

Я новичок в Кафке, поэтому, пожалуйста, потерпите меня. Я пытаюсь использовать сообщения от Kafka topi c. Я использую Python sdp-sdk, который является оболочкой для confluent_kafka потребителя. Мне нужно проверить, установлено ли соединение, прежде чем я начну потреблять сообщения.

Я прочитал, что потребитель ленив, поэтому мне нужно выполнить какое-то действие, чтобы установить соединение. Но я хочу проверить установление соединения, не выполняя операции потребления или poll.

Кроме того, я попытался указать некоторые неправильные конфигурации, чтобы посмотреть, как будет выглядеть ответ на опрос. Ответ, который я получил, был:

b'Broker: No more messages'

Итак, как мне отличить guish, если параметры соединения неверны, соединение разорвано или в topi * 1015 фактически нет сообщений *.

1 Ответ

3 голосов
/ 15 апреля 2020

Боюсь, что нет прямого подхода для проверки работоспособности Kafka Brokers. Также обратите внимание, что если ваш потребитель уже получил сообщения, это не означает, что это плохое поведение, и, очевидно, это не означает, что брокер Kafka не работает.


Возможный обходной путь - выполнить некую быструю операцию и посмотреть, отвечает ли брокер. В качестве примера можно привести список тем:

Использование confluent-kafka-python и AdminClient

# Example using confuent_kafka
from confluent_kafka.admin import AdminClient


admin_client = AdminClient('bootstrap.servers': 'localhost:9092')
topics = admin_client.list_topics().topics

if not topics: 
    raise RuntimeError()

Использование kafka-python и KafkaConsumer

# example using kafka-python
import kafka


consumer = kafka.KafkaConsumer(group_id='test', bootstrap_servers=['localhost:9092'])
topics = consumer.topics()

if not topics: 
    raise RuntimeError()
...