该博文方法有问题,正确方案在http://www.cnblogs.com/dplearning/p/7992994.html

将指定group对应的offset重置到最大值,跳过未消费数据

代码如下:

# coding:utf-8

import os
from confluent_kafka import Consumer, TopicPartition
import traceback def reset_kafka_offset(group, topic):
broker_list = "xx.xx.xx.xx:9092,xx.xx.xx.x:9092"
c = Consumer({'bootstrap.servers': broker_list,
'group.id': group,
'default.topic.config': {'auto.offset.reset': 'smallest'}})
c.subscribe([topic]) tp = TopicPartition(topic, 0)
tp_out = c.committed([tp])
init_offset = tp_out[0].offset
if int(init_offset) == -1001: #是一个新的group 没有消费过
# 如果是一个新的group.id必须先消费一条消息,这样后面的重置offset才有效, 如果不消费,重置offset前后获取到的offset值都是-1001
msg = c.poll()
if not msg.error():
msg_data = msg.value().decode('utf-8')
c.commit() tp = TopicPartition(topic, 0)
watermark_offsets = c.get_watermark_offsets(tp) # 获取offset最大最小值
print watermark_offsets
if watermark_offsets:
logsize = watermark_offsets[1] # offset最大值
if logsize is not None:
tp1 = TopicPartition(topic, 0, int(logsize))
c.commit(offsets=[tp1], async=False) # 直接将offset置为logsize,跳过未消费的数据
tp_out = c.committed([tp]) # 查看提交的offset位置
print tp_out[0].offset
c.close() if __name__ == "__main__":
reset_kafka_offset("test", "test")

【python】confluent_kafka将offset置为最大的更多相关文章

  1. 【python】函数之内置函数

    Python基础 内置函数 今天来介绍一下Python解释器包含的一系列的内置函数,下面表格按字母顺序列出了内置函数: 下面就一一介绍一下内置函数的用法: 1.abs() 返回一个数值的绝对值,可以是 ...

  2. python常用数据类型内置方法介绍

    熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...

  3. Python中的内置函数__init__()的理解

    有点意思,本来我是学习java的.总所周知,java也有构造函数,而python在面向对象的概念中,也有构造函数.它就是 __init__(self) 方法. 其实类似于__init__()这种方法, ...

  4. python字符串常用内置方法

    python字符串常用内置方法 定义: 字符串是一个有序的字符的集合,用与存储和表示基本的文本信息. python中引号中间包含的就是字符串. # s1='hello world' # s2=&quo ...

  5. python学习交流 - 内置函数使用方法和应用举例

    内置函数 python提供了68个内置函数,在使用过程中用户不再需要定义函数来实现内置函数支持的功能.更重要的是内置函数的算法是经过python作者优化的,并且部分是使用c语言实现,通常来说使用内置函 ...

  6. python常用的内置函数哈哈

    python常用的内置函数集合做一个归类用的时候可以查找 abs 返回数字x的绝对值或者x的摸 all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为true,就 ...

  7. python常用的内置函数

    python常用的内置函数集合做一个归类用的时候可以查找- abs 返回数字x的绝对值或者x的摸 - all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为tru ...

  8. python字符串处理内置方法一览表

    python字符串处理内置方法一览表   序号 方法及描述 1 capitalize()将字符串的第一个字符转换为大写 2 center(width, fillchar) 返回一个指定的宽度 widt ...

  9. 十六. Python基础(16)--内置函数-2

    十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...

随机推荐

  1. C#Windows 服务的安装说明

    安装/卸载的步骤: 1 . .点击 开始,运行中输入cmd,获取命令提示符win7需要已管理员的身份启动,否则无法安装 2. 输入 : cd C:\Windows\Microsoft.NET\Fram ...

  2. linux如何查看端口号被哪个进程占用

    1.lsof -i:端口号 lsof(list open files) 2.netstat -tunlp |grep 端口号 t:tcp u:udp n:拒绝显示别名 l:仅显示listen的服务状态 ...

  3. LOJ #2587「APIO2018」铁人两项

    是不是$ vector$存图非常慢啊...... 题意:求数对$(x,y,z)$的数量使得存在一条$x$到$z$的路径上经过$y$,要求$x,y,z$两两不同  LOJ #2587 $ Solutio ...

  4. AspectJ使用的遇到的坑

    1.导入包,但不是使用,会导致R文件错误 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply pl ...

  5. 《Effective Java中文版(第2版).pdf》-笔记

    1.第6页 ---- Java中Properties类的操作 - bakari - 博客园http://www.cnblogs.com/bakari/p/3562244.html 公有的静态方法返回的 ...

  6. Android自定义控件三种方式

    1.组合原生控件(继承自ViewGroup.LinearLayout.FrameLayout.RelativeLayout等)   将原生空间做组合,自定义一些事件 2.自己绘制控件(继承自View) ...

  7. 微信小程序弹出可填写框两种方法

    方法一: html页面: < view class = "container" class = "zn-uploadimg" > < butt ...

  8. 20165231 预习作业3 linux安装及学习

    linux安装 由于以前稍微关注过虚拟机相关知识,所以大致知道虚拟机软件的相关知识.目前我已知的普遍使用的虚拟机软件是VMware Workstation(下文简称VM),VirtualBox(下文简 ...

  9. linux中bashrc与profile的区别

    bashrc与profile的区别 要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell. ...

  10. Android Day2

    紧接前一篇日记: 2.增加文本域 在<LinearLayout>中增加<EditText>元素,无格式设置的时候如下. <EditText android:id=&quo ...