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



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

如果我们可以轮询服务器以获取消息而不是被动等待,那就太好了,但这似乎不受支持,除非我们使用 OpenWire,这似乎是矫枉过正。 关于我们可能使用的解决方案的任何建议?

编辑:当我说我们无法使优先级工作时,我想到了我的意思。 当我们测试ActiveMQ的优先级时,一旦发生足够大的积压,它似乎就不再尊重它们。

您的用例听起来像是开始使用 openwire 客户端的理想时机,因为它支持消息拉取和客户端优先级排序,以防代理无法遵守优先级的情况。 我不太确定你为什么认为这是矫枉过正,但似乎矫枉过正可能正是你所需要的。

最新更新