【问题标题】:Spring - Async Queue for sending mailSpring - 用于发送邮件的异步队列
【发布时间】:2010-06-25 11:59:44
【问题描述】:

我有这个:

 <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" />

我认为我正在配置的是一个异步队列。我希望能够将消息放到它上面,然后让另一个线程拾取它们并稍后处理。但是,目前它似乎以同步的方式进行。

我做错了吗(显然是的),但想知道我在这个配置中是否缺少某些东西,或者我是否只是使用了错误的方法?

干杯

【问题讨论】:

  • 问题中有错字(很明显)。

标签: java email queue spring-integration


【解决方案1】:

默认情况下,Spring Integration 中的所有通道都是同步的。这是一个有意识的设计决策,例如可以帮助您保持事务边界和安全上下文。当您想要进行异步切换时,您应该将任务执行器添加到您的调度程序或将队列添加到您的频道:

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

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

查看参考指南中的channel configurations,了解有关调度程序和队列的一些详细信息。另请参阅section on DirectChannel 以及该部分下方的 ExecutorChannel 部分。

【讨论】:

    猜你喜欢
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    相关资源
    最近更新 更多