如何在 Oracle AQ 中判断多个消费者队列中的哪些消息已被消费

发布于 2024-10-04 11:17:53 字数 741 浏览 6 评论 0原文

我是 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

当梦初醒 2024-10-11 11:17:53

每个队列都会跟踪并确保所有消费者都已出队。您可以查看实际的队列表来了解有多少消费者消费了一条消息。检查 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文