无法阅读来自kafka主题的最新消息

时间:2018-08-16 11:51:49

标签: python apache-kafka kafka-consumer-api kafka-python

我正在使用Kafka的Spotify docker版本。 我现在只有一名生产者,一名经纪人和一名消费者。

问题是,使用此配置,我无法从Kafka获取最新消息。 如果我默认为auto_offset_reset='earliest',那么我会收到所有消息。

这是我给消费者的代码,即使那里有新消息,它也不会打印来自Kafka的任何消息。

def consumer():
consumer = KafkaConsumer('stories',
                         enable_auto_commit=False,
                         value_deserializer=lambda m: json.loads(m.decode('ascii')),
                         bootstrap_servers=['127.0.0.1:9092'],
                         auto_offset_reset='latest',
                         consumer_timeout_ms=1000
                         )

for message in consumer:
    # message value and key are raw bytes -- decode if necessary!
    # e.g., for unicode: `message.value.decode('utf-8')`
    print("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
                                         message.offset, message.key,
                                         message.value))

有人可以帮助我,让我知道问题出在哪里吗?

我只是想从卡夫卡那里获取消费者未读过的消息。

这里是卡夫卡消费者:https://hastebin.com/umuhugacez.py

这里是卡夫卡制作人:https://hastebin.com/laderolawi.py

2 个答案:

答案 0 :(得分:1)

只是一个更新:从Kafka 0.9开始,Kafka使用的是使用者的新Java版本,并且auto.offset.reset参数名称已更改;从手册中:

auto_offset_reset代码错误,应该最早。

最早:将偏移量自动重置为最早的偏移量

最新:自动将偏移量重置为最新的偏移量

无:如果未找到消费者组的先前偏移量,则向消费者抛出异常

其他:向消费者抛出异常。

答案 1 :(得分:0)

我也遇到了这个问题。无论使用者中的设置如何,当我尝试进行视频流传输时,它始终用于缓冲数据。我的案例是通过在定义消费者之后寻求偏移量来解决的。您可以尝试添加

consumer.poll() 
consumer.seek_to_end()