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