• 使用 pykafka 进行消费


    kafka连接脚本

    环境:python3,用到的模块有 pykafka,kazoo

    # coding=utf-8
    
    import pykafka
    
    
    class KafkaReaderThread(object):
        def __init__(self, hosts, broker_version, topic, consumer_group):
            self.hosts = hosts
            self.broker_version = broker_version
            self.topic = topic
            self.consumer_group = consumer_group
            self.client = self.new_client()
    
        def new_client(self):
            print "start connect..."
            try:
                new_client = pykafka.KafkaClient(
                    hosts=self.hosts,
                    # zookeeper_hosts=self.proc_setting['setting']['zk_server'],
                    broker_version=self.broker_version
                )
                print "connected"
                return new_client
            except Exception as e:
                print("error: {}".format(e))
                return
    
        def fetchmany(self):
            client = self.client
            if client:
                consumer = None
                try:
                    topic = client.topics[self.topic]
    
                    consumer = topic.get_balanced_consumer(
                        consumer_group=self.consumer_group,
                        managed=True,
                        auto_start=False,
                        # auto_commit_enable=True,
                        # auto_commit_interval_ms=1
                        # reset_offset_on_start=False,
                        # auto_offset_reset=pykafka.common.OffsetType.LATEST,
                    )
                    # print topic.partitions
                    consumer.start()
                    # _offset = consumer.held_offsets()
                    for message in consumer:
                        # test modle
    
                        print(message.value, consumer.held_offsets)
    
                        consumer.commit_offsets()
                        # consumer.stop()
                        # continue
    
                except Exception as e:
                    print("error: {}".format(e))
                    try:
                        consumer.stop()
                    except Exception as e:
                        pass
    
    
    if __name__ == '__main__':
        hosts = "172.16.1.249:9092"
        broker_version = '0.9.0'
        topic = "BAYONET_VEHICLEALARM"
        consumer_group = "consumer_group_police_seemmo"
    
        kafka = KafkaReaderThread(hosts, broker_version, topic, consumer_group)
        if kafka.client:
            kafka.fetchmany()
    每天都要遇到更好的自己.
  • 相关阅读:
    JS实现菜单滚动到一定高度后固定
    原生js如何获取某一元素的高度
    在Vue项目中,添加的背景图片在服务器上不显示,如何处理
    单行文本截断 text-overflow
    使用line-height垂直居中在安卓手机上效果不好
    css 苹方字体
    十二. for of 示例 (可以解决大多数应用场景)
    npm详解
    webpack搭建服务器,随时修改刷新
    探讨弹性布局Flexible Box
  • 原文地址:https://www.cnblogs.com/kaichenkai/p/10795140.html
Copyright © 2020-2023  润新知