2010-11-24 75 views
0

我是Oracle AQ的新手。如何在Oracle AQ中分辨哪些消息已从多个消费者队列中消耗

我创建了一个表,队列,像这样:

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); 

然后我写了一个监听器Java中的队列中。当我启动监听器时,它会等待6分钟,然后收集队列中的所有消息。

但我无法告诉MY_QUEUE_TABLE哪些消息已被使用。因为我想要一个多个消费者队列,所以我认为这些消息应该坚持到底。但是,Oracle AQ如何跟踪每个侦听器消耗的消息?

回答

1

每个队列都会跟踪并确保所有消费者都已出队。您可以查看实际的队列表以查看有多少消费者已经消费了一条消息。检查aq $ _my_queue_table和aq $ _my_queue_table_I以查看消息的状态。

相关问题