kafka在主题中搜索文本

时间:2019-02-12 14:52:01

标签: apache-kafka kafka-consumer-api

我想搜索kafka主题中的特定消息, 我发现的唯一解决方案是使用bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning |grep 'world\|hello'

interface myOrder {
  one?: number;
  two?: number;
  three?: number;
  four?: number;
}
let obj: myOrder = {"two": 2}
// add property "one".
obj.one = 1337; // evals: {"two":2, "one":1337}
// desired result {"one":1337, "two":2}
obj.four = 4;

let format = ({one,two,three,four}: myOrder) : myOrder => {
   let result = { one,two,three,four }
   Object.keys(result).forEach(key => result[key] === undefined ? delete result[key] : '');
   return result
}

console.log(format(obj))
// returns  { one: 1337, two: 2, four: 4 }
  1. 有没有一种有效的方法?
  2. 有没有一种方法可以限制使用者特定的偏移量,即从头开始读取,直到到达特定的偏移量?

2 个答案:

答案 0 :(得分:2)

  

有没有一种有效的方法?

如果没有消息键,则不会。

如果这样做,则可以计算Murmur2哈希并找到分区号,然后仅扫描该分区号,仍然使用--partition

  

有没有一种方法可以限制使用者特定的偏移量,即从头开始读取,直到到达特定的偏移量?

您可以给--max-messages

如果您不想始终从头开始,请添加--group并继续使用max messages参数运行相同的命令。这将允许使用相同的使用者组,并在完成后提交偏移量

您还可以手动提交偏移量,以从使用kafka-consumer-groups命令开始

答案 1 :(得分:-3)

  

有没有一种有效的方法?

是的。您的解决方案是快速而肮脏的解决方案。如果要过滤数据,请使用Streams API并在另一个主题上编写过滤后的信息。 https://kafka.apache.org/documentation/streams/