我是Kafka的新手,我已经尝试过Kafka-Python软件包。
我设法建立了一个简单的生产者和使用者,可以发送和接收消息。在这种情况下,消费者不使用以下消费者群体:
consumer = KafkaConsumer(queue_name, bootstrap_servers='kafka:9092')
但是,当我开始如下使用group_id时,它将停止接收任何消息:
consumer = KafkaConsumer(bootstrap_servers='kafka:9092', auto_offset_reset='earliest', group_id='my-group')
consumer.subscribe([queue_name])
为了进行比较,我还尝试了confluent-kafka-python程序包,在该程序包中,我有以下消费者代码,该代码也不起作用:
consumer = Consumer({
'bootstrap.servers': 'kafka:9092',
'group.id': 'mygroup',
'auto.offset.reset': 'earliest'
})
consumer.subscribe([queue_name])
也运行./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
会得到空结果。
这里缺少任何配置吗?
答案 0 :(得分:0)
默认情况下,使用者从最后提交的偏移量开始消耗,这可能是您的情况下的最后一个偏移量。
auto.offset.reset
仅在没有提交的偏移量时适用。默认情况下,使用者自动提交偏移量,它通常仅在您第一次运行时才应用(还有一些其他情况,但在此示例中无关紧要)。
因此,要查看消息的流向,您需要在使用者运行时开始产生消息,或者使用其他组名来允许auto.offset.reset
生效。