sql >> Database >  >> NoSQL >> Redis

Hoe kan ik deze gedistribueerde wachtrij met één gelijktijdigheid implementeren in elk MQ-platform?

U kunt dit bereiken door Redis-lijsten te gebruiken met een extra "verzend"-wachtrij die alle werknemers BRPOP op voor hun werk. Elke taak in de verzendwachtrij wordt getagd met de oorspronkelijke wachtrij-ID en wanneer de werknemer de taak heeft voltooid, gaat hij naar deze oorspronkelijke wachtrij en voert RPOPLPUSH uit naar de verzendwachtrij om de volgende taak beschikbaar te maken voor elke andere werknemer. De verzendwachtrij heeft daarom maximaal num_queues elementen.

Een ding dat u moet doen, is de initiële populatie van de verzendwachtrij wanneer de bronwachtrij leeg is. Dit kan gewoon een controle zijn die door de uitgever wordt uitgevoerd tegen een "lege" vlag voor elke wachtrij die aanvankelijk is ingesteld, en ook wordt ingesteld door de werknemer wanneer er niets meer over is in de oorspronkelijke wachtrij om te verzenden. Als deze vlag is ingesteld, kan de uitgever gewoon LPUSH de eerste opdracht direct in de verzendwachtrij.




  1. Hoe vraag je naar is niet null in Mongo?

  2. MongoDB Regex, Index &Prestaties

  3. Atomiciteit, isolatie en gelijktijdigheid in MongoDB

  4. Doe iets als er niets wordt gevonden met .find() mangoest