使Kafka消费者在python中存活的最佳做法是什么?

时间:2020-05-23 07:24:59

标签: python python-3.x apache-kafka kafka-consumer-api

在让消费者保持活力方面,有些事情令我感到困惑。假设我有一个不断向其写入数据的主题。但是,在一天的一个小时内,没有新消息。如果我为消费者设置了超时时间,则在没有新消息时,消费者将被关闭。

现在,新邮件到达。但是,没有活着的消费者去消费它们。

我应该如何处理这种情况?我的消费者可能会消费所有消息并被关闭。使它们存活的最佳方法是什么?有什么方法可以在收到新消息时自动调用它们?这种情况下的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

为什么不只是

import time
from confluent_kafka import Consumer


consumer = Consumer({
    'bootstrap.servers': 'localhost:9092',
    'group.id': 'my-consumer-1',
    'auto.offset.reset': 'earliest'
})
consumer.subscribe(['topicName'])

while True:
    try: 
        message = consumer.poll(10.0)

        if not message:
            time.sleep(120) # Sleep for 2 minutes

        if message.error():
            print(f"Consumer error: {message.error()}")
            continue

        print(f"Received message: {msg.value().decode('utf-8')}")
    except:
        # Handle any exception here
        ...
    finally:
        consumer.close()
        print("Goodbye")

我不能评论“为用户设置超时” 的要求,但是在大多数情况下,消费者应该“永远运行”,并且还应以某种方式添加到消费者组中他们是高度可用的。