Конкурирующие потребители - PullRequest
5 голосов
/ 01 марта 2011

Я хочу настроить приложение интеграции с пружиной так, чтобы, если я поместил в канал несколько задач, каждая из которых представлена ​​одним сообщением, тогда одна из группы конечных точек выберет следующую задачу и обработает ее.Это повлекло бы за собой некоторый сервис исполнителя пула потоков.

1 Ответ

6 голосов
/ 10 мая 2011

Да, используйте диспетчер + исполнитель задач с каналом (он же ExecutorChannel ). Таким образом, любая конечная точка (например, service-activator), потребляющая канал, будет вызываться асинхронно с использованием пула потоков диспетчера.

В следующем примере все сообщения, попадающие на канал channel01, будут использоваться службой jobLauncher в одном из потоков taskExecutor.

<int:channel id="channel01">
    <int:dispatcher task-executor="taskExecutor">
</int:channel>

<task:executor id="taskExecutor" pool-size="2"/>

<int:service-activator input-channel="channel01" ref="jobLauncher">
...