将Kafka消息轮询成单片golang

时间:2019-07-16 12:51:01

标签: go apache-kafka

我想要让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.

0 个答案:

没有答案