优先队列和持久化

3
我有一个Java系统,可以接收以专有的二进制格式发送的消息,并需要对其进行解码、处理和执行某些操作。根据消息有效载荷的不同,消息具有隐含的优先级。我想在系统中使用优先级队列的语义,使用独立的消费者线程读取队列。问题是,一旦系统接受了网络上的消息,它必须保证最终处理该消息,即使系统在接收和处理之间崩溃。因此,我希望将我的优先级队列与持久性支持结合起来。我正在寻找在Java中轻量级地实现这一点的方法,而不是使用完全的ESB或类似工具。
一些额外的信息:我们在亚马逊云中,JMS不是我们环境中的选项。我们可以使用SQS,但它不支持优先级概念,需要轮询,这并不是理想的选择。
谢谢。

2
为什么JMS不是一个选项?听起来这正是你所需要的。 - Michael Borgwardt
1
JMS只需要一个JAR文件和一些磁盘空间,例如ActiveMQ。如果磁盘空间不足,您将会遇到持久化问题。 - Peter Lawrey
运行带有跨区故障转移的经纪人JMS并不是我的运维团队具备的经验。仅有一个JAR+磁盘空间完全忽略了操作问题。 - Scruffers
1个回答

0
SQS使用长轮询,因此它增加了非常低的开销和几乎没有延迟。对于优先级,您可以使用多个队列。每个优先级使用一个队列。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接