1. from kafka import KafkaConsumer,TopicPartition
  2. import json
  3. scrapy_kafka_hosts = ["ip:端口", "ip:端口"]
  4. topic = 'wangliang_test'
  5. consumer = KafkaConsumer(bootstrap_servers=scrapy_kafka_hosts,
    group_id='', # 消费组
  6. value_deserializer=lambda m: json.loads(m.decode('ascii')), # 消费json 格式的消息
  7. auto_offset_reset='latest', # latest 最新的偏移量,默认最新的 # earliest 最早的偏远量,在还一个组时候才可以使用最早的
  8. enable_auto_commit=True, # 是否开启自动提交 默认开启
  9. auto_commit_interval_ms = 6000 # 提交偏移量的时间间隔,默认5000ms = 5 秒
  10. )
  11. consumer.subscribe([topic]) # 消息的主题,可以指定多个
  12. print(consumer.partitions_for_topic(topic))
  13. # print(consumer.topics()) #获取主题列表
  14. # print(consumer.subscription()) #获取当前消费者订阅的主题
  15. # print(consumer.assignment()) #获取当前消费者topic、分区信息
  16. # print(consumer.beginning_offsets(consumer.assignment())) #获取当前消费者可消费的偏移量
  17.  
  18. consumer.assign([
  19. TopicPartition(topic=topic, partition=0),
  20. TopicPartition(topic=topic, partition=1),
  21. TopicPartition(topic=topic, partition=3)
  22. ]) # 该命令与 subscribe 操作只能存在一个 表示指定主题和分区 获取 consumer 消息
  23.  
  24. # print(consumer.assignment()) #获取当前消费者topic、分区信息
  25. consumer.seek(TopicPartition(topic=topic, partition=0), 1) # 指定起始offset为12 1表示offset 表示offset 开始连接
  26. # consumer.seek(TopicPartition(topic=topic, partition=1), 0) # 可以注册多个分区,此分区从第一条消息开始接收
  27. consumer.seek(TopicPartition(topic=topic, partition=3), 0) # 没有注册的分区上的消息不会被消费
  28.  
  29. for msg in consumer:
  30. print(msg)
  31. recv = "%s:%d:%d: key=%s value=%s" % (msg.topic, msg.partition, msg.offset, msg.key, msg.value)
  32. print(recv)
  33. print(msg.value["name"],msg.value["age"])

可以指定分区和消费者消费组和管道时间控制,消费数据。

  1. from kafka import KafkaProducer, KafkaConsumer, TopicPartition
  2. import time
  3.  
  4. class ConsumerForKFK(object):
  5. _MESSAGE_NAME = 'wangliang_test'
  6.  
  7. def __init__(self, kafkahost, client_id):
  8. self.kafkaHost = kafkahost
  9. self.group_id = client_id
  10.  
  11. @property
  12. def consumer_client(self, group_id=None):
  13. return KafkaConsumer(
  14. bootstrap_servers=self.kafkaHost,
  15. # client_id = self.client_id,
  16. group_id=self.group_id,
  17. auto_offset_reset="latest"
  18. # 若不指定 consumer_timeout_ms,默认一直循环等待接收,若指定,则超时返回,不再等待
  19. # consumer_timeout_ms : 毫秒数
  20. # consumer_timeout_ms=5000
  21. )
  22.  
  23. def consumer_seek(self, partition=None, partition_all=None, offset_time=None):
  24. partition_number = range(partition_all) if partition_all else partition
  25. consumer = self.consumer_client
  26. Partition_list = []
  27. for i in partition_number:
  28. Partition_list.append(TopicPartition(topic=self._MESSAGE_NAME, partition=i))
  29. consumer.assign(Partition_list)
  30. print(consumer.assignment()) # 获取当前消费者topic、分区信息
  31. if offset_time:
  32. for Partition in Partition_list:
  33. consumer.seek(Partition, 0)
  34. # 发送到指定的消息主题(异步,不阻塞)
  35. for msg in consumer: # 迭代器,等待下一条消息
  36.  
  37. print(int(time.time()) - int(msg.timestamp / 1000))
  38. if int(time.time()) - int(msg.timestamp / 1000) <= offset_time: # 打印消息
  39. print(msg)
  40. else:
  41. for msg in consumer: # 迭代器,等待下一条消息
  42. print(msg)
  43.  
  44. scrapy_kafka_hosts = ["ip:端口", "ip:端口"]
  45. topic = 'wangliang_test'
  46. cl = ConsumerForKFK(scrapy_kafka_hosts, "")
  47. cl.consumer_seek(
  48. partition=[1, 2],
  49. # partition_all=3,
  50. offset_time=3000
  51. )

消费者学习   https://www.jianshu.com/p/c89997867d48

Python往kafka生产消费数据  https://www.cnblogs.com/longsongpong/p/11010195.html

python操作kafka实践 https://www.cnblogs.com/small-office/p/9399907.html

kafka消费者的更多相关文章

  1. kafka消费者客户端(0.9.0.1API)

    转自:http://orchome.com/203 kafka客户端从kafka集群消费消息(记录).它会透明地处理kafka集群中服务器的故障.它获取集群内数据的分区,也和服务器进行交互,允许消费者 ...

  2. Kafka消费者-从Kafka读取数据

    (1)Customer和Customer Group (1)两种常用的消息模型 队列模型(queuing)和发布-订阅模型(publish-subscribe). 队列的处理方式是一组消费者从服务器读 ...

  3. Python 基于pykafka简单实现KAFKA消费者

    基于pykafka简单实现KAFKA消费者   By: 授客 QQ:1033553122         1.测试环境 python 3.4 zookeeper-3.4.13.tar.gz 下载地址1 ...

  4. Kafka集群安装部署、Kafka生产者、Kafka消费者

    Storm上游数据源之Kakfa 目标: 理解Storm消费的数据来源.理解JMS规范.理解Kafka核心组件.掌握Kakfa生产者API.掌握Kafka消费者API.对流式计算的生态环境有深入的了解 ...

  5. Kafka权威指南 读书笔记之(四)Kafka 消费者一一从 Kafka读取数据

    KafkaConsumer概念 消费者和消费者群组 Kafka 消费者从属于消费者群组.一个群组里的消费者订阅的是同一个主题,每个消费者接收主题一部分分区的消息. 往群组里增加消费者是横向伸缩消费能力 ...

  6. kafka 消费者 timeout 6000

    kafka 消费者 timeout 6000 1:查看zookeeper 的状态,kafka默认是自带zookeeper配置,我建议安装单独的zookeeper  服务,并且配置文件也很简单..直接改 ...

  7. Kafka消费者APi

    Kafka客户端从集群中消费消息,并透明地处理kafka集群中出现故障服务器,透明地调节适应集群中变化的数据分区.也和服务器交互,平衡均衡消费者. public class KafkaConsumer ...

  8. kafka 消费者offset记录位置和方式

    我们大家都知道,kafka消费者在会保存其消费的进度,也就是offset,存储的位置根据选用的kafka api不同而不同. 首先来说说消费者如果是根据javaapi来消费,也就是[kafka.jav ...

  9. JAVA封装消息中间件调用二(kafka消费者篇)

    上一遍我简单介绍了kafka的生成者使用,调用方式比较简单,今天我给大家分享下封装kafka消费者,作为中间件,我们做的就是最大程度的解耦,使业务方接入我们依赖程度降到最低. 第一步,我们先配置一个消 ...

  10. kafka消费者客户端

    Kafka消费者 1.1 消费者与消费者组 消费者与消费者组之间的关系 ​ 每一个消费者都隶属于某一个消费者组,一个消费者组可以包含一个或多个消费者,每一条消息只会被消费者组中的某一个消费者所消费.不 ...

随机推荐

  1. vscode使用Chrome浏览器调试不好用,解决方法!!

    1.如果你是刚下载vscode,那么你需要下载两个插件. 1. open in browser(在浏览器中查看,支持五大主流浏览器),下载并启用. 2. view-in-browser (在浏览器中查 ...

  2. 【ARM-Linux开发】ti CMEM使用

    1.CMEM Overview http://processors.wiki.ti.com/index.php/CMEM_Overview 2.Changing the DVEVM memory ma ...

  3. JPG文件结构分析

    [转自网络  作者:一 江秋水] 一.简述 JPEG是一个压缩标准,又可分为标准 JPEG.渐进式JPEG及JPEG2000三种: ①标准JPEG:以24位颜色存储单个光栅图像,是与平台无关的格式,支 ...

  4. Oracle导出包含clob字段的sql脚本工具

    之前工作中遇到生产环境不允许导入Oracle的dmp文件,只能导入sql脚本,但是表中存在clob字段,直接用plsql工具无法导出clob字段,用了下dbvisualizer可以直接导出,亲测可用. ...

  5. Nginx 小入门记录 之 Nginx 配置文件解读(二)

    上一小节主要是记录一些环境准备和Nginx的安装,接下来对Nginx基本配置进行记录. 查看配置文件安装记录 可以通过以下Linux命令进行查看: rpm -ql nginx rpm 是liunx的包 ...

  6. python进程池 使用Queue实现计数功能

    多进程中各个进程间相互隔离,进程间通信需要使用到通道. 多进程中使用Queue实现进程中通信 from multiprocessing import Process,Queue import time ...

  7. [转帖]ubuntu 修改 apt源的方法

    https://www.cnblogs.com/dadonggg/p/11129973.html ubuntu 和 centos 是不一样的 ubunut 里面 用deb开头 放置到 /etc/apt ...

  8. 【青橙商城-管理后台开发】3. web模块搭建

    [青橙商城-管理后台开发]3. web模块搭建 1.创建qingcheng_web_manager模块 pom.xml <?xml version="1.0" encodin ...

  9. Vue.js + Element.ui 从搭建环境到打包部署

    一.搭建环境 由于新的node已经集成了npm,所以直接安装node,前往node官网下载最新版本的node,根据自己的操作系统选择相应的包,按照步骤一步步走就可以,这里不做过多介绍. 安装好后可以打 ...

  10. go语言操作kafka

    go语言操作kafka Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能.持久化.多副本备份.横向扩展等特点.本文介绍了如何使用Go语言发送和 ...