【问题标题】:Kafka MirrorMaker's consumer not fetching all messages from topicsKafka MirrorMaker 的消费者没有从主题中获取所有消息
【发布时间】:2016-01-07 03:15:07
【问题描述】:

我正在尝试设置 Kafka Mirror 机制,但似乎来自源 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 设置生成到新的 Kafka 镜像集群:

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读取,即从主题开始。

非常感谢!

【问题讨论】:

    标签: scala apache-kafka


    【解决方案1】:

    查看Kafka消费者配置中的auto.offset.reset参数。

    来自 Kafka 文档:

    auto.offset.reset 最大

    如果 Zookeeper 中没有初始偏移量或者如果 偏移量超出范围: * minimum : 自动将偏移量重置为最小偏移量 * 最大:自动将偏移量重置为最大偏移量 * 其他:向消费者抛出异常。如果设置为最大,消费者可能会丢失一些消息 分区,对于它订阅的主题,代理上的更改。到 防止在分区添加过程中丢失数据,将 auto.offset.reset 设置为 最小的

    因此,将smallest 用于auto.offset.reset 应该可以解决您的问题。

    【讨论】:

    • 遇到了同样的问题,尝试了同样的解决方案。没有骰子。还有其他想法吗?
    【解决方案2】:

    在消费者属性中,添加

    auto.offset.reset=earliest

    这应该可行

    【讨论】:

      【解决方案3】:

      答案很晚,但这可能对仍在寻找的人有所帮助。

      到目前为止,kafka mirror 不支持这个。有一个开放的缺陷。KafkaMirror

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-14
        • 1970-01-01
        • 1970-01-01
        • 2017-04-05
        • 2018-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多