I apologize that this is not strictly a node-red issue, but I know there are some MQTT experts here and I got no response when I asked on the MQTT google groups last week.
It appears MQTT is buffering or queuing qos 0 messages. I'm sending jpeg images as MQTT qos 0 messages.
Running on my i7 systems everything works just fine and I'm able to process 50-60 images per second from 15 cameras, 75 fps would be every frame from every camera. But when I go to IOT type system (Pi4B) I can get ~20 fps from 5 Onvif snapshot cameras but this drops to ~9 fps processing the MQTT buffers and latencies grow to a large value 30-40 seconds. Clearly the qos 0 messages are not being dropped but are being queued instead. I thought qos 0 was "fire and forget" but it seems they are being buffered. Is there any way to turn off this buffering? I see various queue settings in the mosquitto config file but they only apply to qos > 0 messages according to the documentation I've found.
I can see the buffering as if I walk in front of the cameras I see myself doing it about 30 seconds later and its as "smooth" as I'd expect form the net frame rate (9 fps for 4 cameras is about 2 fps per camera).
I've also noticed this when using the dashboard trying to display "live" images for camera setup,