我需要持續出隊來自Oracle隊列的消息。關於Oracle AQ出隊方法的建議
據我所知,我們可以通過兩種方式消除消息,無論是通過異步自動通知方法,還是通過手動輪詢過程,一次可以讓一條消息出隊。
我不能去異步通知功能,因爲它收到的消息的數量可能會在高峯時間5分鐘內達到1000和 我不想通過在後臺產生多個回調過程來重載數據庫。
通過手動輪詢過程,我可以創建一個運行24 * 7的一次性調度程序作業,調用一個存儲過程,在WAIT模式(偵聽消息的類型)中循環消息。 這種方法的問題在於:1)調度程序作業連續運行並佔用一個永久性作業槽 2)存儲過程因爲在等待消息的循環中運行而不會退出。
是否有任何替代/更好的解決方案,我不需要有一個工作/程序不斷尋找消息?
我可以使用自動通知方法獲取第一條消息的通知,取消訂閱訂閱者和進一步退出郵件,並且在沒有更多消息時再次訂閱隊列嗎?這是一個安全的方法,我會失去訂閱和取消訂閱之間的任何消息嗎? 順便說一句,我們使用Oracle 10gR2數據庫,所以我不能使用PURGE ON NOTIFICATION選項。
欣賞您的專家解決方案!