Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Ordem de desenfileiramento do Oracle AQ


A ordem de desenfileiramento padrão, acredito, é o primeiro a entrar, primeiro a sair, portanto, eles serão desenfileirados na mesma ordem em que foram enfileirados.

Para o seu segundo ponto, você está dizendo que deseja serializar o desenfileiramento no ID não exclusivo? Ou seja, você basicamente tem muitas filas em sua fila e deseja apenas um trabalho para consumir mensagens de cada fila a qualquer momento?

Ou seja, você tem mensagens:
1 | a
2 | a
3 | b
4 | a

Aqui você tem dois tipos de registro (a e b) e deseja que 1 job consuma todos os a's e outro que consuma todos os b's. Se for esse o caso, considere criar várias filas, talvez?

Falhando em várias filas, dê uma olhada no tipo dequeue_options_t que você passa para o procedimento dequeue - mais notavelmente dequeue_condition - isso permite selecionar apenas mensagens específicas, para que você possa iniciar um trabalho para todos os a e outro para todos os b etc.