高级 Oracle AQ 出队顺序

Advanced Oracle AQ Dequeue Order

我有一个 Java 应用程序,它使用 Oracle 队列将消息存储在队列中,以便稍后由多个线程使用队列中的消息进行处理。此队列中的消息可以相互关联,因此必须根据我的应用程序的业务逻辑以特定顺序进行处理。基本上,我想实现的是,只要队列中的另一条消息 B 尚未完全处理,就可以阻止一条消息 A 的出队。我在这里看到的 Oracle AQ 提供的唯一武器是 Delay 和 Priority 参数。然而,这些不能用于实现上述场景,因为在某些情况下,两个相关消息仍然可以同时出队和处理。是否有任何工具可以帮助建立消息的高级处理顺序?

我得出的结论是,使用队列对这些消息进行排序不是一个好主意,因为它需要一个自定义且非常专业的出列策略,这对我来说非常难闻,无论是复杂性还是最有可能表现明智。它还尝试使用队列修复通信协议问题,这些问题是特定于应用程序的,因此应该在应用程序本身中找到解决方法。相反,应用程序/通信协议应该足够宽容以处理排序问题。