【问题标题】:Priority Queues & Persistence优先队列和持久性
【发布时间】:2012-01-23 10:36:37
【问题描述】:

我有一个 Java 系统,它通过网络以专有的二进制格式接收消息,它需要对其进行解码、处理和处理。消息具有隐含的优先级,具体取决于其有效负载。我想在系统中使用优先级队列的语义,并使用单独的消费者线程读取队列。问题在于,一旦系统通过网络接受了一条消息,它必须保证最终处理它,即使系统在接收和处理之间出现故障。因此,我想坚持不懈地支持我的优先级队列。我正在寻找在 Web 容器进程内的 Java 中实现此目的的轻量级方法,而不是使用完全成熟的 ESB 或类似方法。

一些附加信息:我们在亚马逊云中,不幸的是,JMS 在我们的环境中不是一个选项。我们可以使用 SQS,但这不支持优先级概念并且需要轮询,这并不理想。

谢谢

【问题讨论】:

  • 为什么 JMS 不是一个选项?听起来这正是您所需要的。
  • JMS 只需要一个 JAR 和一些磁盘空间。例如活动MQ。如果它的磁盘空间不在问题范围内,那么您将遇到持久性问题。
  • 运行具有跨区域故障转移的代理 JMS 并不是我的运营团队有过的经验。只需一个 jar+磁盘空间就完全忽略了操作问题。

标签: java data-structures persistence message-queue priority-queue


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 2017-04-11
    • 2012-03-08
    相关资源
    最近更新 更多