使用时间戳来消费消息(kafka)

每条消息都有一个与之相关的时间戳(timestamp),可以使用这个时间戳来筛选或消费特定时间范围内的消息。

timestamp()方法获取消息的时间戳,并检查它是否在指定的时间范围内。

请注意,时间戳是以毫秒为单位的UNIX时间戳。需要根据需要调整start_timestampend_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)

相关推荐

  1. 使用时间消费消息(kafka)

    2024-01-24 06:20:03       53 阅读
  2. Kafka之【消费消息

    2024-01-24 06:20:03       28 阅读
  3. Kafka顺序消费以及消息积压问题

    2024-01-24 06:20:03       122 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-24 06:20:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-24 06:20:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-24 06:20:03       87 阅读
  4. Python语言-面向对象

    2024-01-24 06:20:03       96 阅读

热门阅读

  1. Kafka消费者提交偏移量

    2024-01-24 06:20:03       57 阅读
  2. Python笔记11-闭包、装饰器和设计模式

    2024-01-24 06:20:03       56 阅读
  3. kafka

    2024-01-24 06:20:03       43 阅读
  4. HTML/CSS实现3D翻转页面效果

    2024-01-24 06:20:03       58 阅读
  5. elementui 表单数据嵌套过深导致校验不了问题解决

    2024-01-24 06:20:03       54 阅读
  6. 编程笔记 html5&css&js 055 css默认值

    2024-01-24 06:20:03       46 阅读