2010-06-25 176 views
4

我有這樣的:春天 - 異步隊列發送郵件

<si:poller max-messages-per-poll="10" id="defaultPoller" default="true"> 
    <si:interval-trigger interval="5000"/> 
</si:poller> 
<si:channel id="emailIn"/> 
<si:channel id="emailOut"/> 

<si:service-activator input-channel="emailIn" output-channel="emailOut" ref="mailService" method="recieveMessage"/> 

<si:gateway id="gateway" service-interface="com.blah.MailSender" default-request-channel="emailIn"/> 

<si:outbound-channel-adapter channel="emailOut" ref="mailService" method="recieveMessage" /> 

,我想這是我配置了一個異步隊列。我希望能夠將消息放到它上面,然後讓更多的線程選擇它們並稍後處理。然而,在這一部分,它似乎是以同步的方式做到這一點。

我是不是做錯了(明顯是的),但想知道是否有什麼我在這個配置丟失,或者我只是有錯誤的方法嗎?

乾杯

+0

問題中存在拼寫錯誤(obvioulsy)。 – iwein 2010-10-21 16:30:31

回答

3

默認情況下,Spring集成中的所有通道都是同步的。這是一個有意識的設計決策,可以幫助您保持事務邊界和安全上下文。參考指南在channel configurations

<channel> 
    <dispatcher task-executor="pool"/> 
</channel> 

<channel> 
    <queue capacity="10"/> 
</channel> 

查找有關調度和隊列的一些細節:當你想要做的異步切換式你應該增加任務執行到您的調度員或隊列您的頻道。另請參閱section on DirectChannel以及下面的ExecutorChannel部分。