使用python3第三方工具,实现kafka消费

 # -*- coding: utf-8 -*-

 import uuid
import json
from kafka import KafkaConsumer
from xxxxxx import MessageToDict
from xxx import ObjectInfo import sys
import codecs sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) class ReadKafkaContent(object):
@staticmethod
def deserialize(msg):
"""
反序列化
:param msg:
:return:
"""
pb_obj = ObjectInfo()
pb_obj.Clear()
pb_obj.ParseFromString(msg.value)
return MessageToDict(pb_obj, including_default_value_fields=True, preserving_proto_field_name=True) def consume_msg(self, consumer_obj):
"""
逐条消费,返回反序列化后的内容
:param consumer_obj:
:return:
"""
try:
while True:
msg = next(consumer_obj, None)
if not msg:
continue
content = self.deserialize(msg)
return content
except Exception as ex:
print(u"消费kafka错误,退出测试")
return None def entry(self, topic, ip, count=10, log="log_read_kafka_content.json"):
""" :param topic:topic
:param ip:ip
:param count:查询kafka数据数量,默认10条
:param log:内容保存地址,默认
:return:
"""
print(u"开始......")
try:
# 创建kafka消费对象
print(u"创建kafka消费对象...")
consumer = KafkaConsumer(topic, group_id=uuid.uuid4().hex,
bootstrap_servers=[ip],
auto_offset_reset="latest", consumer_timeout_ms=3 * 1000)
except Exception as ex:
print(u"连接kafka失败!")
return False
print(u"kafka消费对象创建成功.") with open(log, "w") as f:
for i in range(count):
print(u"开始消费第%s条数据..." % str(i + 1))
content = self.consume_msg(consumer)
if not content:
return False # dict转json保存数据内容
content_json = json.dumps(content, ensure_ascii=False, indent=4)
f.write(content_json)
f.write("\n\n")
print(u"第%s条数据写入完成." % str(i + 1)) print(u"完成.")

python之kafka消费的更多相关文章

  1. Mac下Python与Kafka的配合使用

    安装并配置Kafka 安装 # brew install kafka 配置 """ zookeeper配置文件/usr/local/etc/kafka/zookeeper ...

  2. kafka实战教程(python操作kafka),kafka配置文件详解

    kafka实战教程(python操作kafka),kafka配置文件详解 应用往Kafka写数据的原因有很多:用户行为分析.日志存储.异步通信等.多样化的使用场景带来了多样化的需求:消息是否能丢失?是 ...

  3. python操作kafka

    python操作kafka 一.什么是kafka kafka特性: (1) 通过磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能. (2) 高吞吐量 :即使是 ...

  4. kafka 消费​

    前置资料  kafka kafka消费中的问题及解决方法: 情况1: 问题:脚本读取kafka 数据,写入到数据库,有时候出现MySQL server has gone away,导致脚本死掉.再次启 ...

  5. 分享一些 Kafka 消费数据的小经验

    前言 之前写过一篇<从源码分析如何优雅的使用 Kafka 生产者> ,有生产者自然也就有消费者. 建议对 Kakfa 还比较陌生的朋友可以先看看. 就我的使用经验来说,大部分情况都是处于数 ...

  6. Go语言学习之12 etcd、contex、kafka消费实例、logagent

    本节内容:    1. etcd介绍与使用    2. ElastcSearch介绍与使用 1. etcd介绍与使用    概念:高可用的分布式key-value存储,可以使用配置共享和服务发现    ...

  7. Kafka消费时报错:Producer connection to xxx:9092 unsuccessful

    使用kafka消费数据时报Producer错误,具体错误如下: kafka.producer.SyncProducer:103 Producer connection to xxx:9092 unsu ...

  8. Kafka设计解析(十三)Kafka消费组(consumer group)

    转载自 huxihx,原文链接 Kafka消费组(consumer group) 一直以来都想写一点关于kafka consumer的东西,特别是关于新版consumer的中文资料很少.最近Kafka ...

  9. 双十一问题:kafka消费能力低下原因思考

    抛去cpu.内存等机器原因,在每个分区皆分配一个进程消费的情况下,利用扩机器来提高kafka消费速率已无能为力 此时发现,在实际洪峰时段的消费速率元达不到先前压测时的消费速率 原因思考: 1.洪峰时段 ...

随机推荐

  1. web开发(一)-Servlet详解

    在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6399262.html>,在此仅供学习参考之用. 一.什么 ...

  2. 十六:jinja2中的if和for

    jinja2中的逻辑语句和python中的基本一致,执行逻辑的时候用{% 逻辑关键字 %}开始,{% end逻辑关键字 %}结束 if语句(判断关键字也是一样的,and.or.not···): for ...

  3. python UI自动化之JS定位

    1.话不多说,直接贴入代码 上面的 document.getElementById 可以替换成别的定位方式,比如: 通过name获取:document.getElementsByName 通过标签获取 ...

  4. Kotlin 的 @JvmStatic 和 @JvmField 注解

    这是关于 Java 静态方法和静态变量的一段代码: public class TestStatic { private int otherField = 0; public static final ...

  5. Kafka集群搭建和配置

    Kafka配置优化 https://www.jianshu.com/p/f62099d174d9 1.安装&配置 下载tar包 解压后即可使用 修改配置文件 将server.propertie ...

  6. pytest -- 测试的参数化

    目录 1. @pytest.mark.parametrize标记 1.1. empty_parameter_set_mark选项 1.2. 多个标记组合 1.3. 标记测试模块 2. pytest_g ...

  7. unity 角色换装

    unity角色换装的关键是更改角色部位上的物体的SkinnedMeshRenderer组件的属性: 更改mesh:mesh决定了部位的物体的外形,是主要的数据. 刷新骨骼:同一个部位下,不同的mesh ...

  8. HTML5 plus 报错 Uncaught SyntaxError: Unexpected identifier at XXXX.html:1

    最近使用 VUE2.X + muse-ui  + HTML5 plus 开发webApp 调用HTML5 plus报错,错误提示如下 Uncaught SyntaxError: Unexpected ...

  9. AKKA学习(二) 未完

    Actor调用 从上面的例子中,我们可以大概的对AKKA在JAVA中的使用有一个全局的概念.这里我们在稍微细致的讲解一下. 在JAVA中使用AKKA进行开发主要有这几个步骤: 定义消息模型. 创建Ac ...

  10. 开发维护中遇到问题---eclipse、发版问题

    1.jar包冲突问题, [服务器启动service服务器,tomcat也已启动]然后浏览器访问,会出现这样子的问题现象:tomcat什么的启动成功,但是访问时会出现404: 解决方法:先停掉tomca ...