具有优先级或客户端拉取的排队系统?

时间:2013-10-18 20:57:54

标签: activemq priority-queue polling stomp

我正在开展一个项目,其中多个工作人员从作业队列接收STOMP消息以进行处理,我们希望支持优先级。目前,我们正在使用ActiveMQ,但是我们无法使内置优先级支持正常工作,并且不得不求助于使用多个队列,每个队列优先级为一个。这是有效的,但是因为在每个队列的缓冲区中始终存在至少一个未确认的消息客户端,等待被确认。如果一个优先级中有数千条消息,那么缓冲区中用于较低优先级的任何消息都可以设置为一次持续数小时甚至数天。

如果我们可以轮询服务器以获取消息而不是被动等待会很好,但除非我们使用OpenWire,否则这似乎不受支持,这看起来有点过分。有关我们可能使用的解决方案的任何建议吗?

编辑:当我说我们无法让优先事项发挥作用时,我想到了我的意思。当我们测试ActiveMQ的优先级时,一旦发生足够大的积压,它似乎就会停止尊重它们。

1 个答案:

答案 0 :(得分:0)

您的用例听起来像是开始使用openwire客户端的理想时间,因为它支持消息拉取以及客户端优先级排序,以便代理无法兑现优先级。我不太确定你为什么认为它有点矫枉过正,但似乎矫枉过正可能就是你所需要的。