我正在尝试设置Kafka镜像机制,但似乎来自源Kafka集群的Kafka MirrorMaker消费者只有在镜像制作器进程启动时才从新的传入数据读取主题,即它不会读取以前主题中历史保存的数据。
我正在使用Kafka MirrorMaker类:
/bin/kafka-run-class.sh kafka.tools.MirrorMaker --consumer.config consumer.config --num.streams 2 --producer.config producer.config --whitelist=".*"
consumer.config
从Kafka源群集中读取,如下:
zookeeper.connect=127.0.0.1:2181
zookeeper.connection.timeout.ms=6000
group.id=kafka-mirror
和producer.config
设置:
metadata.broker.list=localhost:9093
producer.type=sync
compression.codec=none
serializer.class=kafka.serializer.DefaultEncoder
有没有办法定义Kafka MirrorMaker的使用者从我的源Kafka群集的主题的开头读取?有点奇怪,因为我在consumer.config
设置中定义了一个新的消费者群体(kafka-mirror
),所以消费者应该只从offset 0
读取,即从主题的开头。
非常感谢提前!
答案 0 :(得分:4)
查看Kafka使用者配置中的auto.offset.reset
参数。
来自Kafka文档:
auto.offset.reset最大
当Zookeeper中没有初始偏移量时,或者如果有 偏移量超出范围: *最小:自动将偏移重置为最小偏移 *最大:自动将偏移重置为最大偏移 *其他任何事情:向消费者抛出异常。如果将此设置为最大,则消费者可能会在数量时丢失一些消息 分区,对于它所订阅的主题,在代理上进行更改。至 在分区添加期间防止数据丢失,将auto.offset.reset设置为 最小
因此,对smallest
使用auto.offset.reset
可以解决您的问题。
答案 1 :(得分:3)
在消费者属性中,添加
auto.offset.reset=earliest
这应该有效
答案 2 :(得分:0)
答案很晚,但这对某些仍在寻找的人可能会有帮助。
到目前为止,kafka mirror不支持此功能。有一个开放的缺陷。KafkaMirror