仅读取来自Kafka主题的最后一条消息

时间:2018-07-05 19:36:27

标签: c++ apache-kafka video-streaming kafka-consumer-api

我正在尝试通过Kafka主题发送视频流,并在每次使用消息之间进行一些处理。该处理大约需要20毫秒,因此在100帧之后,我会有一个延迟。我可以检测到此延迟,但是,从检测到延迟的那一刻起,我就必须能够强制我的使用者从最新发送的帧中读取数据。我知道这会导致跳过许多帧。

我正在使用基于librdkafka的cppkafka。

我找不到能使我走上正确道路的线索,因为大多数答案要么与我的问题不同,要么使用仅在其他语言API中存在的概念。

有人对此事有想法吗?

1 个答案:

答案 0 :(得分:3)

一种简单的方法(如果是蛮力的话)是检查队列中的帧数。如果超过某个上限,则执行一个紧密循环,在该循环中您“消耗”并丢弃(即完全不进行处理)这些帧,直到达到下限阈值(在您的情况下为一个)。 / p>

完成紧密循环后,您将恢复队列的正常处理。