![](/img/trans.png)
[英]Cannot consume from Kafka Topic using confluent-kafka-python to a new consumer-group
[英]Consume Data from Confluent Kafka Topic and Exit using Python
我正在尝试编写 python 代码来使用来自 Confluent Kafka 主题的数据并作为测试项目的一部分执行数据验证。 我能够读取数据,但是消耗过程处于无限循环中,并且如果循环读取了所有消息,则寻找退出的决策点。
请参见下面的示例代码
conf = {'bootstrap.servers': "server:port", #
'group.id': str(uuid.uuid1),
'auto.offset.reset': 'earliest',
'security.protocol': 'SASL_SSL',
'sasl.mechanism': 'PLAIN',
'session.timeout.ms': 6000
}
consumer = Consumer(conf)
consumer.subscribe([topic], on_assign=on_assign)
try:
while True:
msg=consumer.poll(timeout=2.0)
# print(msg)
if msg is None:
print('msg is None')
continue
if msg.error().code() == KafkaError._PARTITION_EOF:
print('End of partition reached {0}/{1}'
.format(msg.topic(), msg.partition()))
print( msg.error().code())
else:
print(msg.value())
except KeyboardInterrupt:
print("Interrupted through kb")
finally:
consumer.close()
请建议什么是决定是否读取所有消息的最佳方法,以便我可以退出循环并关闭消费者。
Apache 根据定义,Kafka 主题是无限的事件流。 stream 没有“结束”,只有您可以选择定义的人为结束。
您需要在应用程序逻辑中定义它。 例如,如果您在<x>
秒内没有收到消息,请将其视为“结束”,并停止消费。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.