我应该在offsetOutOfRange上停止我的node-kafka-consumer吗?

时间:2016-08-01 07:50:23

标签: node.js apache-kafka

我写了一个node-kafka消费者。在极少数情况下,我使用在某些偏移可用时使用的group-id启动kafka客户端,但不再可用 - 导致" offsetOutOfRange"要被召唤的事件。 在这种情况下,建议的行为是什么?记录错误并退出?有办法恢复吗?我总是希望从最后提交的偏移量(如果存在且可用)运行zookeeper。

client = new kafka.Client(ZOOKEEPER_URLS),

consumer = new Consumer(client, [], {
      groupId: GROUP_ID,
      fromOffset: true
    });

consumer.on('offsetOutOfRange', function (topic) {
      applicationLogger.error('Kafka consumer is trying to read from offset which is out of range', topic);
      process.exit(1);
    });

1 个答案:

答案 0 :(得分:1)

我想知道为什么在node-kafka-consumer中没有实现这一点,但处理其他客户端偏移范围错误的默认行为是发出OffsetRequest以获得最早或最新的可用偏移量,然后将使用者偏移量设置为新值并继续提取。

这是一个完全可恢复的情况,您只需要指定要恢复的偏移量 - 最早或最新可用。