Sto usando RabbitMQ per fare in modo che i processi di lavoro codifichino i file video. Vorrei sapere quando tutti i file sono completi, ovvero quando tutti i processi di lavoro sono terminati.Come sapere quando una serie di attività RabbitMQ è completa?
L'unico modo che posso pensare di farlo è quello di utilizzare un database. Quando un video termina codifica:
UPDATE videos SET status = 'complete' WHERE filename = 'foo.wmv'
-- etc etc etc as each worker finishes --
E poi per verificare se tutti i video sono stati codificati:
SELECT count(*) FROM videos WHERE status != 'complete'
Ma se ho intenzione di fare questo, allora mi sento come se sto perdendo il vantaggio di RabbitMQ come meccanismo per più processi di lavoro distribuiti, dal momento che devo ancora mantenere manualmente una coda di database.
Esiste un meccanismo standard per le dipendenze RabbitMQ? Cioè, un modo per dire "aspetta che questi 5 compiti finiscano, e una volta che sono finiti, quindi dare il via a una nuova attività?"
Io non voglio avere un processo padre aggiungere queste attività per una coda e poi "attendere" per ciascuno di loro per restituire uno stato "completato". Quindi devo mantenere un processo separato per ogni gruppo di video, a quel punto ho perso il vantaggio dei processi di lavoro disaccoppiati rispetto a un singolo concetto di ThreadPool.
Sto chiedendo qualcosa che è impossibile? O ci sono soluzioni standard ampiamente adottate per gestire lo stato generale delle attività in una coda che ho perso?
Edit: dopo la ricerca, ho trovato questa domanda simile: Getting result of a long running task with RabbitMQ
ci sono tutti i pensieri particolari che la gente ha di questo?
Pollice in alto per fare riferimento al nome del modello. –