Я пытаюсь отправить видеопоток через тему Кафки и выполняю некоторую обработку между каждым потреблением сообщений. Эта обработка занимает примерно 20 миллисекунд, поэтому после 100 кадров у меня появляется соответствующая задержка. Я могу обнаружить эту задержку, однако мне нужно иметь возможность заставить моего потребителя читать последний отправленный кадр с момента обнаружения задержки. Я знаю, что это приведет к пропуску многих кадров.
Я использую cppkafka, которая основана на librdkafka.
Я не могу найти руководство, которое поставит меня на правильный путь, поскольку большинство ответов либо отличаются от моей проблемы, либо используют концепции, существующие только в API других языков.
Есть мысли по этому поводу?
Простой, хотя и грубый, способ сделать это — проверить количество кадров в очереди. Если выше определенного верхнего порога, тогда сделайте жесткий цикл, где вы «потребляете» и отбрасывать (т.е. вообще не обрабатывает) фреймов, пока вы не достигнете нижнего порога (в вашем случае один).
Как только этот узкий цикл завершен, вы возобновляете нормальную обработку очереди.
Других решений пока нет …