• kafka python 指定分区消费 与 offset


    指定offset:

    #pip install kafka-python
    import gzip
    from kafka import KafkaConsumer from kafka import TopicPartition consumer = KafkaConsumer(bootstrap_servers='127.0.0.1:9092') partition = TopicPartition('mytopic', 0) start = 8833 end = 8835 consumer.assign([partition]) consumer.seek(partition, start) i=start for msg in consumer: if msg.offset > end: break else: print msg try: outF = file( '/data/app/tar/' + str(i) + ".gz", 'wb') outF.write(msg.value) outF.close() i+=1 print i except Exception,e: print e

    指定分区:

    通过assign、subscribe两者之一为消费者设置消费的主题
    
    consumer = KafkaConsumer(bootstrap_servers=['127.0.0.1:9092'],
    
                             auto_offset_reset='latest',
    
                             enable_auto_commit=True, # 自动提交消费数据的offset
    
                             consumer_timeout_ms= 10000, # 如果1秒内kafka中没有可供消费的数据,自动退出
    
                             value_deserializer=lambda m: json.loads(m.decode('ascii')), #消费json 格式的消息
    
                             client_id='consumer-python3'
    
                             )
    
     
    
     
    
    # consumer.assign([TopicPartition('MY_TOPIC1', 0)])
    
    # msg = next(consumer)
    
    # print(msg)
    
     
    
    consumer.subscribe('MY_TOPIC1')
    
    for msg in consumer:
    
        print (msg)
    
     
    
     
    
    API及常用参数说明:
    
    class kafka.KafkaConsumer(*topics, **configs)
    
    *topics (str) – 可选,设置需要订阅的topic,如果未设置,需要在消费记录前调用subscribe或者assign。
    
     
    
    client_id (str) – 客户端名称,默认值: ‘kafka-python-{version}’
    
     
    
    group_id (str or None) – 消费组名称。如果为None,则通过group coordinator auto-partition分区分配,offset提交被禁用。默认为None
    
     
    
    auto_offset_reset (str) – 重置offset策略: 'earliest'将移动到最老的可用消息, 'latest'将移动到最近消息。 设置为其它任何值将抛出异常。默认值:'latest'。
    
     
    
    enable_auto_commit (bool) –  如果为True,将自动定时提交消费者offset。默认为True。
    
     
    
    auto_commit_interval_ms (int) – 自动提交offset之间的间隔毫秒数。如果enable_auto_commit 为true,默认值为: 5000。
    
     
    
    value_deserializer(可调用对象) - 携带原始消息value并返回反序列化后的value
    
     
    
    subscribe(topics=(), pattern=None, listener=None)
    
    订阅需要的主题
    
    topics (list) – 需要订阅的主题列表
    
    pattern (str) – 用于匹配可用主题的模式,即正则表达式。注意:必须提供topics、pattern两者参数之一,但不能同时提供两者。
    
     
    
    metrics(raw=False)
    
    获取消费者性能指标。
    
     
    
    参考API:https://kafka-python.readthedocs.io/en/master/apidoc/KafkaConsumer.html

    原文强参考:https://www.cnblogs.com/shouke/p/10463377.html

  • 相关阅读:
    preg_replace函数/e后门
    php7.0-7.3的bypass disable_function一把梭
    PHP反序列化逃逸
    day2filter_var函数漏洞
    基于 Elasticsearch 聚合搜索实现电商筛选查询功能
    基于SpringBoot + Redis + 轮询实现扫码登录
    教你理解Lambda表达式
    记录解决 Elasticseach 过滤与聚合问题
    基于 MyBatis-Plus 解决数据库逻辑删除与唯一索引问题
    Java8 Stream Lamdba sorted()排序遇到的小坑
  • 原文地址:https://www.cnblogs.com/lshan/p/11778752.html
Copyright © 2020-2023  润新知