二、Oracle AQ

1、创建用户并赋予权限。

--创建用户、并赋予权限
create user devuser identified by devuser;
grant execute on dbms_aq to devuser;
grant execute on dbms_aqadm to devuser;
grant dba to devuser;
BEGIN
  DBMS_AQADM.grant_system_privilege('ENQUEUE_ANY','devuser',false);
   DBMS_AQADM.grant_system_privilege('DEQUEUE_ANY','devuser',false);
END;

2、创建对象类型

create type demo_queue_payload_type as object
(message varchar2(2000));

3、创建队列表

BEGIN
  dbms_aqadm.create_queue_table(queue_table        =>'demo_queue_table',
                                queue_payload_type => 'demo_queue_payload_type');
END;                                

4、创建队列并启动队列

BEGIN
  dbms_aqadm.create_queue(queue_name  => 'demo_queue',
                          queue_table => 'demo_queue_table');

  dbms_aqadm.start_queue(queue_name => 'demo_queue');
END;

5、入队

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('这是第四条消息');

  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;

6、出队

DECLARE
  r_dequeue_options    dbms_aq.dequeue_options_t;
  r_message_properties dbms_aq.message_properties_t;
  v_message_handle     RAW(16);
  o_payload            demo_queue_payload_type;
BEGIN
  --r_dequeue_options.dequeue_mode := dbms_aq.browse;

  dbms_aq.dequeue(queue_name         =>'demo_queue',
                  dequeue_options    =>r_dequeue_options,
                  message_properties =>r_message_properties,
                  payload            =>o_payload,
                  msgid              =>v_message_handle);

 

  --dbms_output.put_line('***浏览的消息是' || o_payload.MESSAGE || '***');
  
  COMMIT;
END;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值