1
Oracle 10g中的觸發器生成upsert和刪除常規表中行子集的消息。這些消息由兩個字段組成:Oracle AQ出列訂單
- 一個唯一的行ID。
- 一個非唯一的ID。
當消費這些消息我想在雙端隊列過程尊重以下約束強加的順序:
- 郵件必須按插入順序出隊。
- 屬於同一個ID的消息必須以這樣一種方式出隊,以至於其他出隊過程不應該能夠使用該ID出隊潛在的後繼消息(或消息)。由於消息是使用觸發器生成的,因此我無法爲此使用組。
我正在爲AQ使用Oracle Java接口。任何關於如何實現的指針?
N隊列不是一個選項(有很多,許多不同的ID與壽命相對較短)。出隊選項方法的問題是,我需要對將來不在隊列中的消息(具有相同的ID)進行某種鎖定。否則,另一個消費者C2可能在消費者C1完成消費1之前消費消息2(都是'a'型消息)。 ATM我認爲這個問題可以通過NOWAIT(timeout => 0)用戶鎖解決,但我不相信在AQ中沒有「native」解決方案。 – yawn 2009-11-20 23:37:26