2011-05-09 52 views
1

我正在嘗試寫入通用的pl/sql(重新)入隊消息已經入隊(以任何狀態出現在隊列表中)。Oracle AQ的requeue

當在隊列上啓用出列隊列時,它可以正常工作,因此我可以首先在瀏覽模式下出列,以填充DBMS_AQ.message_properties_t並從現有消息加載。但是,如果出隊被禁用,我該如何獲取?

DBMS_AQ.enqueue(
     queue_name   => fine, 
     enqueue_options  => fine, 
     message_properties => how from existing message, 
     payload    => how from existing message 
            (probably can select, not big deal), 
     msgid    => fine); 

感謝

回答

1

有是如何做到這一點的Oracle的網站一個很好的例子: http://download.oracle.com/docs/cd/B10500_01/appdev.920/a96587/apexampl.htm

基本上就可以「出列」以非破壞性的方式(IE離隊用於瀏覽的目的)。因爲你不是出軌的,所以信息仍然存在。

+0

您好艾倫,我知道了DBMS_AQ.BROWSE模式的但是當隊列上的出列隊列被禁用時,即使在瀏覽模式下也會出錯。 – 2011-05-09 19:25:31

1

HAVE讓出隊爲了得到一個消息,無論在瀏覽刪除模式:

begin 
    sys.dbms_aqadm.start_queue('[QUEUE_NAME]', true, true); 
end; 
/