sql >> Base de Datos >  >> NoSQL >> Redis

¿Cómo puedo implementar esta cola distribuida de simultaneidad única en cualquier plataforma MQ?

Puede lograr esto usando listas de Redis con una cola adicional de "despacho" que todos los trabajadores BRPOP en sus puestos de trabajo. Cada trabajo en la cola de envío se etiqueta con el ID de cola original y, cuando el trabajador ha completado el trabajo, va a esta cola original y realiza RPOPLPUSH. en la cola de despacho para que el próximo trabajo esté disponible para cualquier otro trabajador. Por lo tanto, la cola de despacho tendrá un máximo de num_queues elementos.

Una cosa que tendrá que manejar es la población inicial de la cola de envío cuando la cola de origen está vacía. Esto podría ser simplemente una verificación realizada por el editor contra un indicador "vacío" para cada cola que se establece inicialmente, y también establecida por el trabajador cuando no queda nada en la cola original para enviar. Si se establece esta bandera, el editor puede simplemente LPUSH el primer trabajo directamente en la cola de despacho.