kafka-node start从上一个偏移消耗

时间:2016-06-21 16:24:09

标签: node.js apache-kafka kafka-consumer-api

我正在使用kafka-node来使用来自特定Kafka主题的消息。当我重新启动我的节点服务器时,它会按预期启动我的消费者,但它的默认行为是从偏移量0开始消耗,而我的目标是仅接收新消息(也就是从当前偏移开始消耗)。我没有找到从API文档中实现这一目标的方法。谁知道它是否受支持?

谢谢!

3 个答案:

答案 0 :(得分:6)

我在kafka-node github问题(link)中问了这个问题并得到了答案。它现在可用(从v0.4.0开始)。以下代码段对我有用:

$shops = explode("break",$result);
$values = array();

foreach ($shops as $shop) {
    $values = explode("_", $shop);
    foreach($values as $value) {
        $name = $value[0];
        $location = $value[1];
        $tel = $value[2];
    }
}

干杯!

答案 1 :(得分:1)

类似的答案;这将检索每个分区的所有偏移量,并将偏移量设置为最大值负1,以消耗给定主题的最后发布的消息。

var offset = new kafka.Offset(client)
offset.fetchLatestOffsets([topic], (err, offsets) => {
    if (err) {
        console.log(`error fetching latest offsets ${err}`)
        return
    }
    var latest = 1
    Object.keys(offsets[topic]).forEach( o => {
        latest = offsets[topic][o] > latest ? offsets[topic][o] : latest
    })
    consumer.setOffset(topic, 0, latest-1)
})

答案 2 :(得分:-1)

如果您只想接收新消息,则必须在创建消费者实例之前设置以下属性: auto.offset.reset =最新