1

我是 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写了一个Listener到队列。当我启动监听器时,它会等待 6 分钟,然后从队列中收集所有消息。

但我无法在 MY_QUEUE_TABLE 中分辨出哪些消息已被消费。因为我想要一个多消费者队列,所以我认为消息应该保留。但是,Oracle AQ 如何跟踪每个侦听器消费了哪些消息?

4

1 回答 1

2

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

于 2010-11-25T00:00:20.563 回答