PL/SQL:如何处理 DBMS_AQ.DEQUEUE 超时

问题描述 投票:0回答:2

我正在从 PL/SQL 程序调用 DBMS_AQ.DEQUEUE。我不想永远等待,但如果在再次尝试出队之前队列中没有数据,我会定期超时。 DEQUEUE 过程的Oracle 文档清楚地说明了如何指定超时(使用 dequeue_options 中的 wait 字段)。然而,它没有提及超时时会发生什么。

我本来期望文档指定如何处理超时情况,但要么是我忽略了它,要么是文档疏忽,要么它应该是显而易见的,只是我缺乏 PL/SQL 经验,让我不知道如何去做。在任何情况下,任何有关如何最好地处理/捕获出队超时的建议将不胜感激。

oracle plsql advanced-queuing
2个回答
2
投票

对于其他正在寻找答案的人,这就是我所追求的(感谢 nineside 的评论):

begin
  dbms_aq.dequeue(
    payload            => payload
   ,queue_name         => queue_name
   ,dequeue_options    => deq_opt
   ,message_properties => msg_prty
   ,msgid              => msgid
  );
exception
  when others then
    if sqlcode = -25228 then
      -- handle timeout here
    end if;
end;

0
投票

嗨,团队,请告诉我如何打印/dbmsoutput.put_line 正在出列的内容我遇到了一些错误?

© www.soinside.com 2019 - 2024. All rights reserved.