我正在使用 Kafka 0.8 和 zookeeper 3.3.5。实际上,我们有十几个主题正在消费,没有任何问题。
最近,我们开始喂养和消费一个行为怪异的新主题。消耗的偏移量突然被重置。它尊重我们设置的 auto.offset.reset 策略(实际上是最小的),但我不明白为什么该主题突然重置其偏移量。
我正在使用高级消费者。
这是我发现的一些错误日志:我们有一堆这样的错误日志:
[2015-03-26 05:21:17,789] INFO 从代理 id:1,主机:172.16.23.1,端口:9092 获取元数据,1 个主题集(MyTopic)的相关 id 为 47(kafka.cl ient.ClientUtils$) [2015-03-26 05:21:17,789] 错误生产者连接到 172.16.23.1:9092 不成功(kafka.producer.SyncProducer) java.nio.channels.ClosedByInterruptException 在 java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202) 在 sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:681) 在 kafka.network.BlockingChannel.connect(BlockingChannel.scala:57) 在 kafka.producer.SyncProducer.connect(SyncProducer.scala:141) 在 kafka.producer.SyncProducer.getOrMakeConnection(SyncProducer.scala:156) 在 kafka.producer.SyncProducer.kafka$producer$SyncProducer$$doSend(SyncProducer.scala:68) 在 kafka.producer.SyncProducer.send(SyncProducer.scala:112) 在 kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:53) 在 kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:88) 在 kafka.consumer.ConsumerFetcherManager$LeaderFinderThread.doWork(ConsumerFetcherManager.scala:66) 在 kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:51)
每次发生此问题时,我都会看到 WARN 日志:
[2015-03-26 05:21:30,596] WARN 由于套接字错误重新连接:null (kafka.consumer.SimpleConsumer)
然后真正的问题发生了:
[2015-03-26 05:21:47,551] INFO 连接到 172.16.23.5:9092 用于生产(kafka.producer.SyncProducer) [2015-03-26 05:21:47,552] INFO 从 172.16.23.5:9092 断开连接(kafka.producer.SyncProducer) [2015-03-26 05:21:47,553] 信息 [ConsumerFetcherManager-1427047649942] 为分区 ArrayBuffer([[MyTopic,0], initOffset 45268422051 添加了 fetcher 到 br oker id:5,host:172.16.23.5,port:9092]) (kafka.consumer.ConsumerFetcherManager) [2015-03-26 05:21:47,553] 信息 [ConsumerFetcherThread-MyTopic_group-1427047649884-699191d4-0-5],开始 (kafka.consumer.Cons umerFetcherThread) [2015-03-26 05:21:50,388] 错误 [ConsumerFetcherThread-MyTopic_group-1427047649884-699191d4-0-5],分区 [MyTopic,0] 的当前偏移量 45268422051 超出范围;将偏移量重置为 1948447612 (kafka.consumer.ConsumerFetcherThread) [2015-03-26 05:21:50,490] 错误 [ConsumerFetcherThread-MyTopic_group-1427047649884-699191d4-0-5],分区 [MyTopic,0] 的当前偏移量 1948447612 超出范围;将偏移量重置为 1948447612 (kafka.consumer.ConsumerFetcherThread) [2015-03-26 05:21:50,591] 错误 [ConsumerFetcherThread-MyTopic_group-1427047649884-699191d4-0-5],分区 [MyTopic,0] 的当前偏移量 1948447612 超出范围;将偏移量重置为 1948447612 (kafka.consumer.ConsumerFetcherThread) [2015-03-26 05:21:50,692] 错误 [ConsumerFetcherThread-MyTopic_group-1427047649884-699191d4-0-5],分区 [MyTopic,0] 的当前偏移量 1948447612 超出范围;将偏移量重置为 1948447612 (kafka.consumer.ConsumerFetcherThread)
现在的问题是:是否有人已经经历过这种行为?当 Kafka 决定重置其偏移量时,是否有人可以告诉我 auto.offset.reset 是最大还是最小?
谢谢你。