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

Hvordan kan jeg implementere denne enkelte samtidighedsdistribuerede kø i enhver MQ-platform?

Du kan opnå dette ved at bruge Redis-lister med en ekstra "afsendelseskø", som alle arbejdere BRPOP på til deres job. Hvert job i afsendelseskøen er mærket med det originale kø-id, og når arbejderen har fuldført jobbet, går den til denne originale kø og udfører RPOPLPUSH ind i afsendelseskøen for at gøre det næste job tilgængeligt for enhver anden medarbejder. Afsendelseskøen vil derfor maksimalt have antal_køer elementer.

En ting, du skal håndtere, er den indledende befolkning af afsendelseskøen, når kildekøen er tom. Dette kunne blot være en kontrol udført af udgiveren mod et "tomt" flag for hver kø, der er sat i starten, og også indstillet af arbejderen, når der ikke er noget tilbage i den oprindelige kø at sende. Hvis dette flag er indstillet, kan udgiveren bare LPUSH det første job direkte ind i afsendelseskøen.




  1. MongoDB $anyElementTrue

  2. mongodb find efter flere array-elementer

  3. Mongoose/node.js hvordan man finder, udfylder, laver ting, 'affolker' og opdaterer

  4. Brug af MongoDB $pull til at slette dokumenter i et array