PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Fila em php e postgres


Conforme escrito, outro trabalhador tentando reivindicar o trabalho bloquearia na consulta 1. Ele pode ver a versão antiga da linha, mas não pode atualizá-la - ele bloquearia.

Portanto, não faça isso em uma única transação. Reivindicar e comprometer; faça o trabalho; então resolva e confirme. Qualquer trabalhador que vier verá que a linha já está reivindicada. Além disso, você pode ver que está reivindicado, o que o ajudará na depuração e monitoramento.

Ao reivindicar a linha, você deve marcar com algo distinto (um pid, se houver apenas uma máquina de trabalho, ou um nome de host e pid, se houver vários) em vez de simplesmente 'em andamento'. Dessa forma, se um trabalhador morrer, você poderá limpar manualmente depois dele.