本文介绍: 请注意,时间戳是以毫秒为单位的UNIX时间戳。),可以使用这个时间戳来筛选或消费特定时间范围内的消息。方法获取消息的时间戳,并检查它是否在指定的时间范围内。每条消息都有一个与之相关的。
每条消息都有一个与之相关的时间戳(timestamp),可以使用这个时间戳来筛选或消费特定时间范围内的消息。
timestamp()
方法获取消息的时间戳,并检查它是否在指定的时间范围内。
请注意,时间戳是以毫秒为单位的UNIX时间戳。需要根据需要调整start_timestamp
和end_timestamp
的值。
from confluent_kafka import Consumer, KafkaError
def consume_messages_by_timestamp(bootstrap_servers, group_id, topic, start_timestamp, end_timestamp):
consumer_config = {
'bootstrap.servers': bootstrap_servers,
'group.id': group_id,
'auto.offset.reset': 'earliest', # 从最早的偏移量开始消费
}
consumer = Consumer(consumer_config)
# 订阅主题
consumer.subscribe([topic])
try:
while True:
msg = consumer.poll(1.0) # 1秒的超时时间
if msg is None:
continue
if msg.error():
if msg.error().code() == KafkaError._PARTITION_EOF:
# 到达分区末尾,继续等待消息
continue
else:
print(f"消费者错误: {msg.error()}")
break
# 获取消息的时间戳
timestamp = msg.timestamp()[1]
# 检查消息是否在指定的时间范围内
if start_timestamp <= timestamp <= end_timestamp:
print(f"从主题 '{msg.topic()}' 的分区 '{msg.partition()}' 接收到消息: {msg.value().decode('utf-8')}")
except KeyboardInterrupt:
pass
finally:
# 关闭消费者
consumer.close()
# 示例用法
bootstrap_servers = 'your_kafka_bootstrap_servers'
group_id = 'your_consumer_group_id'
topic = 'your_kafka_topic'
start_timestamp = 1642656000000 # 2022-01-20 00:00:00 in milliseconds
end_timestamp = 1642742399000 # 2022-01-20 23:59:59 in milliseconds
consume_messages_by_timestamp(bootstrap_servers, group_id, topic, start_timestamp, end_timestamp)
原文地址:https://blog.csdn.net/Lucius_/article/details/135757583
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_61425.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。