【问题标题】:How to programmatically check if Kafka Broker is up and running in Python如何以编程方式检查 Kafka Broker 是否在 Python 中启动并运行
【发布时间】:2020-07-28 07:34:09
【问题描述】:

我正在尝试使用来自 Kafka 主题的消息。我正在使用confluent_kafka 消费者的包装器。在开始使用消息之前,我需要检查是否建立了连接。

我读到消费者很懒,所以我需要执行一些操作来建立连接。但我想在不进行consumepoll 操作的情况下检查连接建立。

另外,我尝试提供一些错误的配置来查看投票的响应。我得到的回应是:

b'Broker: No more messages'

那么,如何判断是连接参数错误、连接断开,还是主题中实际上没有消息?

【问题讨论】:

    标签: python apache-kafka kafka-consumer-api kafka-python


    【解决方案1】:

    恐怕没有直接的方法来测试 Kafka Brokers 是否启动并运行。另请注意,如果您的消费者已经消费了这些消息,这并不意味着这是一种不良行为,显然这并不表示 Kafka 代理已关闭。


    一种可能的解决方法是执行某种快速操作并查看代理是否响应。一个例子是列出主题:

    使用confluent-kafka-pythonAdminClient

    # Example using confuent_kafka
    from confluent_kafka.admin import AdminClient
    
    kafka_broker = {'bootstrap.servers': 'localhost:9092'}
    admin_client = AdminClient(kafka_broker)
    topics = admin_client.list_topics().topics
    
    if not topics: 
        raise RuntimeError()
    

    使用kafka-pythonKafkaConsumer

    # example using kafka-python
    import kafka
    
    
    consumer = kafka.KafkaConsumer(group_id='test', bootstrap_servers=['localhost:9092'])
    topics = consumer.topics()
    
    if not topics: 
        raise RuntimeError()
    

    【讨论】:

    • 生产者写主题时,如何获取其状态以查看其是空闲还是忙碌?
    • 或者如果生产者本身宕机了?
    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多