如何在Oracle AQ中告知从多个使用者队列中消耗了哪些消息

时间:2010-11-24 23:21:31

标签: oracle jms 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 个答案:

答案 0 :(得分:2)

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