È difficile dire senza una completa comprensione di ciò che stai cercando di realizzare, ma in base a ciò che stai dicendo, penso che un database abbia più senso. Potresti voler utilizzare insieme un database e un sistema di accodamento.
La ragione è che in questo tipo di situazione in genere si desidera avere una sorta di controllo di controllo e le code di controllo non forniscono questo. Volete sapere chi ha fatto cosa quando è giusto? Dove lo rintraccerai? Molto probabilmente è in un DB. Inoltre devi preoccuparti di cose come un lavoratore che seleziona un'attività e poi torna a casa malato. Non vuoi avere un sacco di letture a lungo termine senza fili sulle code.
La cosa importante da capire sulle code è che le letture sono distruttive. Questo li rende una soluzione povera (da soli) in molte situazioni comuni. In poche parole, una volta che qualcuno ha eseguito la lettura, è difficile non sapere che il messaggio è mai stato lì. Se un messaggio viene letto e commesso da un consumatore ma quest'ultimo non riesce a elaborarlo correttamente, le cose possono andare perse. Un sacco di sistemi di code hanno "consegna garantita" che non significa tanto quanto la gente pensa di sì. Significa semplicemente che è arrivato alla sua destinazione (o che è stato segnalato come non consegnabile) ma non garantisce che il consumatore abbia fatto qualcosa con esso. "Quindi cosa, la lettura da un database non cambia" si potrebbe dire. La differenza è che quando leggi il messaggio dal DB, non scompare. Spesso non vuoi nemmeno cancellarlo dal DB ma piuttosto monitorare lo stato. Ciò significa che non si perdono messaggi a causa di difetti nei consumatori.
Penso che la soluzione ibrida funzioni bene qui. Usa le code come meccanismo di distribuzione. Sono grandiosi per la gestione di molti lettori che tirano dallo stesso insieme di cose e assicurandosi che solo un lettore ottenga ogni cosa. Puoi farlo in DBs ma è un po 'brutto. Quindi, una volta che un lettore ha rivendicato e articolo, è possibile aggiornare il DB con quelle informazioni con contesa molto poco. È possibile inviare lo stesso messaggio in coda secondo necessità per il requisito di 2 lavoratori (è necessario un meccanismo per evitare che lo stesso operatore gestisca entrambe le richieste) e anche nel caso in cui un lavoratore preleva un messaggio ma non esegue mai l'operazione.