从异常队列中出列消息

时间:2018-02-02 05:21:48

标签: oracle

如何从例外队列出列消息? 我在谷歌搜索但没有简短的想法。

2 个答案:

答案 0 :(得分:0)

如果那是关于Oracle Advanced Queuing(我不知道),Google知道Oracle会说以下内容:

  

如何从异常队列中出队?

     

多消费者队列的异常队列也必须是a   多消费者队列。

     

多网络队列中的过期消息无法通过   预定的邮件收件人。但是,他们可以出局   REMOVE模式一次(仅一次)在队列中使用NULL使用者名称   选项。消息也可以从异常队列中出列   指定消息ID。

     

过期的消息只能通过指定消息ID来出列   在没有的队列表中创建了多消费者异常队列   兼容参数或兼容参数设置为'8.0'

这是你要找的吗?

答案 1 :(得分:0)

首先,您必须启动异常队列:

EXECUTE DBMS_AQADM.START_QUEUE('OWNER.your_ex_q', true, true);

然后你可以运行以下指令出队,传递MSG_ID:

DECLARE
   dequeue_options     dbms_aq.dequeue_options_t;
   message_properties  dbms_aq.message_properties_t;
   message_handle      RAW(16);
   message             aq.message_typ;

BEGIN
   DBMS_AQ.DEQUEUE(queue_name => 'msg_queue',
           dequeue_options    => dequeue_options,
           message_properties => message_properties,
           payload            => message,
           msgid              => message_handle);

   COMMIT;
END;