我需要持续出队来自Oracle队列的消息。关于Oracle AQ出队方法的建议
据我所知,我们可以通过两种方式消除消息,无论是通过异步自动通知方法,还是通过手动轮询过程,一次可以让一条消息出队。
我不能去异步通知功能,因为它收到的消息的数量可能会在高峰时间5分钟内达到1000和 我不想通过在后台产生多个回调过程来重载数据库。
通过手动轮询过程,我可以创建一个运行24 * 7的一次性调度程序作业,调用一个存储过程,在WAIT模式(侦听消息的类型)中循环消息。 这种方法的问题在于:1)调度程序作业连续运行并占用一个永久性作业槽 2)存储过程因为在等待消息的循环中运行而不会退出。
是否有任何替代/更好的解决方案,我不需要有一个工作/程序不断寻找消息?
我可以使用自动通知方法获取第一条消息的通知,取消订阅订阅者和进一步退出邮件,并且在没有更多消息时再次订阅队列吗?这是一个安全的方法,我会失去订阅和取消订阅之间的任何消息吗? 顺便说一句,我们使用Oracle 10gR2数据库,所以我不能使用PURGE ON NOTIFICATION选项。
欣赏您的专家解决方案!