Java 生产者消费者,将远程消息队列作为生产者,将ExecutorService作为本地消费者

Java 生产者消费者,将远程消息队列作为生产者,将ExecutorService作为本地消费者,java,executorservice,producer-consumer,future,Java,Executorservice,Producer Consumer,Future,我有一个生产者消费者的情况,我有一个远程消息队列,需要定期轮询新任务消息,还有一个本地ExecutorService,它执行任务。有许多这样的任务执行器轮询MQ。本地执行器将具有固定数量的线程和相对固定的吞吐量 但问题是,如果主消息循环无法处理远程消息,我不希望它继续使用远程消息,但如果有更多的工作要做,我希望它能够持续工作。我希望为每个线程至少准备一个任务,但不要太多,以免让其他工作人员挨饿 经典的生产者消费者。问题是,ExecutorService提取了我需要知道的一些信息(线程总数、繁忙线

我有一个生产者消费者的情况,我有一个远程消息队列,需要定期轮询新任务消息,还有一个本地
ExecutorService
,它执行任务。有许多这样的任务执行器轮询MQ。本地执行器将具有固定数量的线程和相对固定的吞吐量

但问题是,如果主消息循环无法处理远程消息,我不希望它继续使用远程消息,但如果有更多的工作要做,我希望它能够持续工作。我希望为每个线程至少准备一个任务,但不要太多,以免让其他工作人员挨饿

经典的生产者消费者。问题是,
ExecutorService
提取了我需要知道的一些信息(线程总数、繁忙线程数等)。实际线程数是在启动时创建相应的
ExecutorService
时配置的。然后将其与远程消息队列的抽象一起注入到我的主worker循环中


我觉得我错过了一些明显的东西。目前,我倾向于使用
ExecutorService
的decorator模式来跟踪计数。我很好奇,有没有一种更优雅的解决方案,任何人都曾使用过?

如果您使用
ExecutorService
的实现,那么您就可以访问
ExecutorService
中缺少的所需信息(例如
getActiveCount()
getTaskCount()

请参见!我知道我错过了一些明显的东西。谢谢。:)我担心,如果我的inc/dec计数开始下降1,那么我的手就会一团糟。