我在ActiveMQ中实现了一个优先级队列。如果队列持续被高优先级消息淹没,则低优先级消息将不会得到处理。 ActiveMQ如何处理这种情况,或者如何避免或处理这种情况?ActiveMQ如何防止低优先级消息的匮乏?
2
A
回答
4
ActiveMQ不会尝试做任何事情来防止这种情况,因为它取决于您根据您的应用程序的需求来解决它。如果您遇到这种情况,您可能需要考虑使用每个优先级的队列来实现队列间的负载平衡。
1
扩展到Tim Bish的答案,ActiveMQ中有一些功能可以用来处理这种情况。
您可以设置一个虚拟目标来过滤掉高位和低位的prio消息,就像这样(在virtualDestinationInterceptor标签内)。
<virtualDestinations>
<compositeQueue name="ALL">
<forwardTo>
<filteredDestination selector="JMSPriority < 5" queue="LOW.PRIO"/>
<filteredDestination selector="JMSPriority > 4" queue="HIGH.PRIO"/>
</forwardTo>
</compositeQueue>
</virtualDestinations>
然后,您可以按照替代策略here。 您将一个使用者放在HIGH.PRIO队列中的LOW.PRIO队列和多个使用者身上。然后LOW.PRIO消息将被处理,但线程数少于高级prio消息。
您还可以直接从消费类应用程序中的所有选择器中的“ALL”队列读取消息。
相关问题
- 1. ActiveMQ的优先级
- 2. 如何防止java中的线程匮乏
- 3. 线程匮乏
- 4. ActiveMQ:设置消息优先级不起作用
- 5. 线程消息之间的优先级?
- 6. 带优先级的消息处理
- 7. 确定窗口消息的优先级
- 8. 使exe优先级低
- 9. 在AMQP中实现消息优先级
- 10. 如何更改MSMQ中消息的优先级?
- 11. qsub低优先级的作业?
- 12. 降低Task.Factory.StartNew线程的优先级
- 13. OS X中的低优先级I/O
- 14. 如何使用TOS设置消息优先级?
- 15. 限制MSMQ消息/优先消息
- 16. 发布低优先级更新
- 17. 从低优先级从java运行ffmpeg
- 18. 运算符优先级(按位'&'低于'==')
- 19. 低优先级线程被阻止。 Win CE
- 20. 优先级队列中的优先级
- 21. 如何确定terraform执行优先级的优先级
- 22. 为优先级较高的元素和其他优先级较低的元素排序优先队列
- 23. 如何删除与最低优先级的元素在C++
- 24. 如何在低优先级的Android/Java上执行Linux命令?
- 25. 在Javascript中有任何消息优先级吗?
- 26. 取消ActiveMQ消息
- 27. 如何防止接收广播消息
- 28. activemq消息redelivery
- 29. 在相反的优先级顺序提供的Oracle AQ优先级的JMS消息
- 30. 如何在VxWorks中执行低优先级任务