应用offsets_for_times前提是kafka版本0.11及以上版本
并且跟producer配置也有关系
使用KafkaConsumer.offsetsForTimes要确认集群已开启log.message.timestamp.type参数,并且clien要使用0.10.*以及以上的客户端发送数据,数据格式和0.9不同了
具体可看官方文档,在kafka节点上会除了.index和.log文件还多了一个时间跟offset对应关系的文件。
flow_test.py
# coding: utf-8
import sys
import datetime
import time
reload(sys)
sys.setdefaultencoding('utf-8')
import json
import hashlib
import ConfigParser
import OaDataSystem
import sys
sys.setdefaultencoding('utf-8')
import CrmOperator
from kafka import KafkaConsumer
from kafka.structs import TopicPartition, BrokerMetadata
from kafka.errors import KafkaError
import json
import send_email
from threading import Thread
from time import ctime, sleep
import redis
import traceback
class kafkaprocess():
def msg_process(self, message_set, class_set):
class_set['kafka_log'].logOperator(1, str(message_set))
for msg in message_set:
myjson = json.loads(msg.value.decode('utf-8'))
if int(myjson['data']['teacher_id']) == 6557:
print "test0