Мне нужно получить данные из activeMQ, а затем передать их исполнителям, работающим в ThreadPoolExecutor.ActiveMQ и ThreadPoolExecutor, работающие вместе
Проблема в том, что мне не нужно получать следующие данные из очереди, пока у меня не будет хотя бы один поток в пуле, сидящем без дела, готовый принять эту задачу.
Я могу просто заняться ждать до activeCount < poolSize. Но я был бы признателен за любое решение с некоторой асинхронной обработкой этого. Заранее спасибо.
Я немного запутался. Мне кажется, что вы просто хотите, чтобы обработчик сообщения выполнял() задачу, и вам не нужно ни о чем беспокоиться. Задача будет поставлена в очередь в случае необходимости с помощью TPE и выполнена после того, как исполнитель станет свободным для выполнения работы. Нет необходимости ждать, пока сообщение будет доступно, вы просто выталкиваете его из очереди сообщений в очередь исполнителя. – Gimby
@Gimby, вы правы, но это требование, чтобы я не мог получить данные из постоянного ActiveMQ, пока не будет обеспечена комната для выполнения. –
Это потому, что между временем, когда сообщение потребляется, и выполнение задачи не должно быть задержек? Его немного трудно представить себе аргументацию, и без надлежащей аргументации трудно определить, какие могут быть возможные решения. У меня есть ощущение, что это связано с тем, что не использует ThreadPoolExecutor, поскольку он предназначен для очереди. – Gimby