2011-03-01 109 views
5

我想配置一個Spring集成應用程序,這樣如果我在一個通道上放置多個任務(每個任務由一條消息表示),則一組終端中的一個將選擇下一個任務並處理它。這將需要一些線程池執行器服務,我猜。競爭消費者

回答

6

是的,使用調度程序+任務執行程序與通道(又名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">