Vous devez inverser votre commande afin qu'il n'y ait pas de fenêtre de temps.
Consommateur POP (chaque consommateur a un $consumer_id unique)
Update queue
set last_pop = '$consumer_id'
where last_pop is null
order by id limit 1;
$job =
Select * from queue
where last_pop = '$consumer_id'
order by id desc
limit 1;
Fournisseur PUSH
insert into queue
(id, last_pop, ...)
values
(NULL, NULL, ...);
La file d'attente est triée dans le temps par la colonne id et assignée sur POP par au consumer_id.