0

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

4

1 回答 1

0

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

于 2016-07-08T19:44:43.970 回答