2010-11-24 30 views
0

Je suis nouveau sur Oracle AQ.Comment savoir dans Oracle AQ quels messages ont été consommés à partir d'une file d'attente à plusieurs clients

J'ai créé une table et une file d'attente comme ceci:

EXEC dbms_aqadm.create_queue_table(queue_table=>'MY_QUEUE_TABLE', 
            queue_payload_type=>'sys.aq$_jms_text_message', 
            multiple_consumers=>TRUE); 

EXEC dbms_aqadm.create_queue(queue_name=>'CONTACT_INFO_QUEUE', 
          queue_table=>'MY_QUEUE_TABLE', 
          max_retries=>24, 
          retry_delay=>60, 
          retention_time=>3600); 

Puis j'ai écrit un écouteur à la file d'attente en Java. Lorsque je démarre l'écouteur, il attend 6 minutes puis recueille tous les messages de la file d'attente.

Mais je ne peux pas dire dans MY_QUEUE_TABLE quels messages ont été consommés. Parce que je veux une file d'attente multi-consommateurs, je pense que les messages devraient rester. Cependant, comment Oracle AQ garde-t-il la trace des messages que chaque écouteur a consommés?

Répondre

1

Chaque file d'attente gardera la trace et s'assurera que tous les consommateurs ont retiré leur demande. Vous pouvez regarder la table de file d'attente réelle pour voir combien de consommateurs ont consommé un message. Vérifiez aq $ _my_queue_table et aq $ _my_queue_table_I pour voir l'état des messages.