我有一个Java系统,它以专有的二进制格式通过网络接收消息,它需要解码,处理和执行某些操作。消息具有隐含的优先级,具体取决于其有效负载。我想在系统中使用优先级队列的语义,并使用单独的消费者线程读取队列。问题是,一旦系统通过网络接受了消息,它必须保证最终处理它,即使系统在接收和处理之间发生故障。因此,我想用持久性来支持我的优先级队列。我正在寻找轻量级的方法来在Java容器流程中实现这一点,而不是使用完全成熟的ESB或类似方法。
一些额外的信息:我们在Amazon云中,遗憾的是JMS在我们的环境中不是一个选项。我们可以使用SQS,但这不支持优先级概念,并且需要不太理想的轮询。
由于
答案 0 :(得分:0)
SQS使用长轮询,因此它增加了非常低的开销,并且几乎没有延迟。对于优先级,您可以使用多个队列。每个优先级一个。