如何在 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 如何跟踪每个侦听器消耗了哪些消息?
I'm new to Oracle AQ.
I have created a table and a queue like so:
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);
Then I wrote a Listener to the queue in Java. When I start the Listener, it waits 6 minutes and then collects all the messages from the queue.
But I can't tell in MY_QUEUE_TABLE which messages have been consumed. Because I want a multiple consumer queue, I think the messages should stick around. However, how does Oracle AQ keep track of which messages each listener has consumed?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
每个队列都会跟踪并确保所有消费者都已出队。您可以查看实际的队列表来了解有多少消费者消费了一条消息。检查 aq$_my_queue_table 和 aq$_my_queue_table_I 以查看消息的状态。
Each queue will keep track and ensure that all consumers have dequeued. You can look at the actual queue table to see how many consumers have consumed a message. Check aq$_my_queue_table and aq$_my_queue_table_I to see the status of messages.