我正在尝试通过 Kafka 主题发送视频流,并在每个消息消费之间进行一些处理。此处理大约需要 20 毫秒,因此在 100 帧之后,我会产生相应的延迟。我可以检测到这种延迟,但是,我需要能够强制我的消费者从检测到延迟的那一刻起读取最新发送的帧。我知道这会导致跳过许多帧。
我使用的是基于 librdkafka 的 cppkafka。
我找不到能让我走上正确道路的线索,因为大多数答案要么与我的问题不同,要么使用仅在其他语言 API 中存在的概念。
对此事有什么想法吗?
最佳答案
一种简单但有点粗鲁的方法是检查队列中的帧数。如果高于某个上限阈值,则执行一个紧密循环,“消耗”并丢弃(即根本不处理)帧,直到达到下限阈值(在您的情况下是一个)。
完成紧密循环后,您将恢复队列的正常处理。
关于c++ - 只读取来自 Kafka 主题的最后一条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51198703/