在我的项目中,我有两个JMS队列,一个数据队列和一个业务队列。多个线程从这两个队列中读取数据并将其提交到多个引擎的网格。 网格有多个引擎,可以同步和异步方式并行执行任务。
问题陈述:来自业务队列的事件应优先于网格上的数据队列。
这个问题可以通过多种方式解决,但资源利用率应该是最优的,如果可能的话,数据队列中事件的饥饿就不会发生。
一个简单的解决方案是:维护计数器,如果业务事件发生则递增,如果在网格上处理业务事件则递减。如果数据事件到来需要等到计数器达到零(或网格上的最大引擎数)。可以做Sthng来阻止饥饿。
任何更好的利用网格引擎的soln也是最佳的java线程利用率?
答案 0 :(得分:0)
你是否在读者线程中试过这个:
while(reading from any queue)
{
while (there are messages in business queue)
{
process a business queue message.
}
process one data queue message.
}