Oracle
 sql >> Base de données >  >> RDS >> Oracle

Ordre de retrait Oracle AQ

Je crois que l'ordre de retrait par défaut est le premier entré, premier sorti, donc ils seront retirés de la file d'attente dans le même ordre qu'ils ont été mis en file d'attente.

Pour votre deuxième point, dites-vous que vous voulez sérialiser dequeue sur l'identifiant non unique ? C'est-à-dire que vous avez essentiellement de nombreuses files d'attente dans votre file d'attente et que vous souhaitez qu'un seul travail consomme les messages de chaque file d'attente à la fois ?

C'est-à-dire que vous avez des messages :

1 | a
2 | a
3 | b
4 | a

Ici, vous avez deux types d'enregistrement (a et b) et vous voulez qu'une tâche consomme tous les a et une autre consomme tous les b. Si tel est le cas, envisagez peut-être de créer plusieurs files d'attente ?

À défaut de plusieurs files d'attente, jetez un œil au type dequeue_options_t que vous transmettez à la procédure de dequeue - notamment dequeue_condition - cela vous permet de sélectionner uniquement des messages spécifiques, de sorte que vous pouvez démarrer une tâche pour tous les a et une autre pour tous les b, etc.