Redis
 sql >> Database >  >> NoSQL >> Redis

Come posso implementare questa singola coda distribuita in concorrenza in qualsiasi piattaforma MQ?

Puoi ottenere ciò utilizzando gli elenchi Redis con una coda di "invio" aggiuntiva che tutti i lavoratori BRPOP avanti per il loro lavoro. Ogni lavoro nella coda di invio è contrassegnato con l'ID coda originale e, quando il lavoratore ha completato il lavoro, passa a questa coda originale ed esegue RPOPLPUSH nella coda di spedizione per rendere disponibile il lavoro successivo per qualsiasi altro lavoratore. La coda di spedizione avrà quindi un massimo di num_code elementi.

Una cosa che dovrai gestire è la popolazione iniziale della coda di invio quando la coda di origine è vuota. Questo potrebbe essere solo un controllo eseguito dall'editore rispetto a un flag "vuoto" per ciascuna coda impostata inizialmente e impostato anche dal lavoratore quando non è rimasto nulla nella coda originale da inviare. Se questo flag è impostato, l'editore può semplicemente LPUSH il primo lavoro direttamente nella coda di invio.