设为首页 加入收藏

TOP

Oracle高级队列介绍(三)
2015-07-24 11:23:32 来源: 作者: 【 】 浏览:4
Tags:Oracle 高级 队列 介绍
'DD-MON-YYYY HH24:MI:SS.FF3' ) || ']' ); COMMIT; END; /

我们还未完成通知步骤。我们需要向队列增加一个订阅者(subsriber)并注册订阅者接到通知时的动作(例如将执行我们的回调过程)。


BEGIN


DBMS_AQADM.ADD_SUBSCRIBER (
queue_name => 'demo_queue',
subscriber => SYS.AQ$_AGENT(
'demo_queue_subscriber',
NULL,
NULL )
);


DBMS_AQ.REGISTER (
SYS.AQ$_REG_INFO_LIST(
SYS.AQ$_REG_INFO(
'DEMO_QUEUE:DEMO_QUEUE_SUBSCRIBER',
DBMS_AQ.NAMESPACE_AQ,
'plsql://DEMO_QUEUE_CALLBACK_PROCEDURE',
HEXTORAW('FF')
)
),
1
);
END;
/


现在我们可以通过入列消息来测试。这个消息将仅包含一个时间戳以便我们对比入列和自动出列发生的时间差。

DECLARE


r_enqueue_options DBMS_AQ.ENQUEUE_OPTIONS_T;
r_message_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
v_message_handle RAW(16);
o_payload demo_queue_payload_type;


BEGIN


o_payload := demo_queue_payload_type(
TO_CHAR(SYSTIMESTAMP, 'DD-MON-YYYY HH24:MI:SS.FF3' )
);


DBMS_AQ.ENQUEUE(
queue_name => 'demo_queue',
enqueue_options => r_enqueue_options,
message_properties => r_message_properties,
payload => o_payload,
msgid => v_message_handle
);


COMMIT;


END;
/

为了查看我们的小时是否自动出列,我们将检查应用表(DEMO_QUEUE_MESSAGE_TABLE)。
SELECT message
FROM demo_queue_message_table;


MESSAGE
---------------------------------------------------------------------------
Message [21-JUL-2005 21:54:51.156] dequeued at [21-JUL-2005 21:54:56.015]



我们可以看到通过通知异步出列大约在入列操作后5秒后发生。
首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇oracleHA高可用性详解(之二,深.. 下一篇ORA-27100sharedmemoryrealmalrea..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·你必须要弄懂的多线 (2025-12-25 04:22:35)
·如何在 Java 中实现 (2025-12-25 04:22:32)
·Java【多线程】单例 (2025-12-25 04:22:29)
·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)