Да, используйте диспетчер + исполнитель задач с каналом (он же 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">