使用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. .tcc文件

    今天看源码时碰到一个MemoryPool.h文件和MemoryPool.tcc文件,毫不犹豫在vs工程下把.tcc加到了源文件文件夹下, 把.h文件放到了头文件文件夹下.结果闹了笑话: 以下是解释, ...

  2. java高级面试题汇总(复习)从最基础的往上复习,每天定期更新。

    每天搬一点砖,总有一天成为大牛! 看问题的时候请不要立马去翻答案,多想想. 看完答案可以问问为什么,尝试拓展!一起加油吧! 每个答案后面都有一个小彩蛋(一个以上的拓展问题),钻研让你先人一步. jav ...

  3. C#开启一个进程

    Process myProc = null; myProc = Process.Start(@"E:\QQ轻聊\Tencent\QQLite\Bin\QQScLauncher.exe&quo ...

  4. jQuery .submit()

    .submit() Events > Form Events | Forms .submit( handler )Returns: jQuery Description: Bind an eve ...

  5. 保存json数据到本地和读取本地json数据

    private void saveJson(JsonBean bean) { File file = new File(getFilesDir(), "json.txt"); Bu ...

  6. django路由的二级分发

    基于二级分发设计url路由 path('index/', views.index), path('index/', ([ path('test01/', test01), path('test02/' ...

  7. Web09_MySQL多表&JDBC

    使用JDBC发送insert语句完成单表[添加]操作 使用JDBC发送update语句完成单表[更新]操作 使用JDBC发送delete语句完成单表[删除]操作 使用JDBC发送select语句完成单 ...

  8. wpf passwordbox控件 光标移到最后

    /// <summary> /// 设置光标位置 /// </summary> /// <param name="passwordBox">&l ...

  9. C#客户端填充外部IE浏览器中网页文本(input)且不提交

    //引用COM组件//Microsoft HTML Object Library//Microsoft Internet Controls  记得改成x86 SHDocVw.ShellWindows ...

  10. 深入理解Istio核心组件之Pilot

    Istio作为当前服务网格(Service Mesh)领域的事实标准,流量治理(Traffic Management)是其最为基础也最为重要的功能.本文将结合源码对Istio流量治理的实现主体——组件 ...