Ce trebuie să implementați: creați o coadă de sarcini și executați-le.
Sarcinile pot fi diferite. Caracterizată de clasă, metodă și parametri pentru această metodă. De exemplu, sarcina ("archiver", "add-file-in-archive", "nume de fișier-arhivă, nume de fișier").
Execuția poate fi întreruptă și apoi continuată, de exemplu, timpul alocat iterației sa încheiat și trebuie să reporniți.
Ce modele de design ați recomanda să vedeți?
Semnificația cozilor este redusă la un simplu schimb de mesaje între procese. Adică, un proces trimite un mesaj cu datele de lucru, celălalt așteaptă mesajul și, imediat ce acesta sosește, îndeplinește sarcina descrisă în mesaj. După aceasta, poate trimite un mesaj la primul proces în care sarcina este finalizată. De obicei, există un client, un server și un furnizor. Clientul adaugă sarcina, serverul îl primește și îl dă muncitorului care o execută. Pentru a organiza un astfel de schimb, există multe soluții, printre care: Gearman, RabbitMQ, ActiveMQ, Amazon SQS (serviciu de coadă în nor).
Eu folosesc Gearman pe proiectele mele. Un client poate adăuga o lucrare pentru a rula în fundal, așteptați să ruleze și să urmăriți starea. De către gearman o mulțime de informații pe Internet, și există clienți pentru aproape toate limbile de programare populare. Deși nu au existat plângeri, acesta funcționează foarte rapid și în mod constant.
Soluțiile pentru organizarea cozilor sunt suficiente. Ceea ce trebuie folosit este mai mult o chestiune de gust. Totul are argumente pro și contra. Du-te în partea de "Queue", "Message Queue". Dacă vă opriți pe mecanismul de reglare, vă pot ajuta cu instalarea și configurarea.