我有一个Java应用程序,它使用Oracle Queue将消息存储在队列中,以便以后由多个线程处理消耗排队的消息。此队列中的消息可以相互关联,因此必须根据应用程序的业务逻辑以特定顺序进行处理。基本上,我希望实现只要队列中的另一个消息B没有被完全处理,就会阻止一个消息A的出列。我在这里看到的Oracle AQ给出的唯一武器是Delay和Priority参数。然而,这些不能用于实现上面概述的场景,因为存在两个相关消息仍然可以同时出列和处理的情况。是否有任何工具可以帮助建立消息的高级处理顺序?
答案 0 :(得分:0)
我得出的结论是,使用队列来订购这些消息并不是一个好主意,因为它需要一个自定义且非常专业的出列策略,这对我来说非常难闻,复杂性和最有可能表现明智。它还尝试使用队列修复通信协议问题,这是特定于应用程序的,因此应该在应用程序本身中找到处理。相反,应用程序/通信协议应该足够容忍以处理排序问题。