尝试使用confluent_kafka.AvroConsumer消耗给定时间戳记中的消息。
if flag:
# creating a list
topic_partitons_to_search = list(
map(lambda p: TopicPartition('my_topic2', p, int(time.time())), range(0, 1)))
print("Searching for offsets with %s" % topic_partitons_to_search)
offsets = c.offsets_for_times(topic_partitons_to_search, timeout=1.0)
print("offsets_for_times results: %s" % offsets)
for x in offsets:
c.seek(x)
flag=False
控制台返回此
Searching for offsets with [TopicPartition{topic=my_topic2,partition=0,offset=1543584425,error=None}]
offsets_for_times results: [TopicPartition{topic=my_topic2,partition=0,offset=0,error=None}]
{'name': 'Hello'}
{'name': 'Hello'}
{'name': 'Hello1'}
{'name': 'Hello3'}
{'name': 'Hello3'}
{'name': 'Hello3'}
{'name': 'Hello3'}
{'name': 'Hello3'}
{'name': 'Offset 8'}
{'name': 'Offset 9'}
{'name': 'Offset 10'}
{'name': 'Offset 11'}
{'name': 'New'}
这些都是my_topic2分区0中的所有消息(分区1中没有任何消息),我们应该什么也得不到,因为我们没有从当前时间(time.time())产生的消息。然后,我希望能够使用time.time() - 60000
之类的东西来获取最近60000毫秒内的所有消息
答案 0 :(得分:1)
Python的time.time()返回自纪元以来的秒数,offsets_for_times使用距纪元的毫秒数,因此当我发送秒数时,它计算的日期比今天早得多,这意味着我们应该包括我所有的抵消额。