我想要让kafka使用者将Kafka消息轮询为一个事件片段并对该片段执行一些批量操作,并且应该阻塞线程直到批量操作完成,以确保我不会丢失来自Kafka的任何记录
我正在使用confluent-kafka-go库,该库为我们提供了在一段时间内轮询消费者的灵活性,该间隔每次都会返回一个Event。我想在提到的时间间隔内轮询事件片段,以便我可以对该片段运行批处理操作。
var records []struct
maxBatchsize := 500
ev := c.Poll(1000)
switch e := ev.(type) {
case *kafka.Message:
fmt.Println(string(e.Value))
<<<json unmarshalled to struct>>>
records = append(records, struct)
if len(records) >= maxBatchsize {
err := BulkInsert(records)
if err != nil {
_, _ = c.Commit()
records = nil
}
}
以上代码仅对黑客有帮助,但不能解决我的问题。我想避免使用maxBatchSize。我想要
之类的功能val x = consumer.poll(5000).asScala \\which returns me and iterable consumer<k,v> on which I can perform bulk operations.