【问题标题】:Spring JavaMailSender: Making it asynchronous and persistentSpring JavaMailSender:使其异步和持久化
【发布时间】:2012-05-25 19:38:56
【问题描述】:
是否有一种简单/轻量级的方法可以将持久性添加到 Spring 的 JavaMailSender 并使其异步运行? Spring 是否为此提供任何“内置”支持?我目前正在查看带有 JMS 的队列,但对于手头的任务(查看 ActiveMQ 和 RabbitMQ)来说,它们似乎有点过头了。是否有轻量级 JMS 选项?
【问题讨论】:
标签:
spring
queue
jms
spring-jms
【解决方案1】:
您使用jms 的方法很好。不幸的是,持久化和异步处理并不是那么简单的任务,您将不得不编写一些代码。
不过看看Spring integration,它提供了对 JMS 入站和电子邮件出站的内置支持 - 您所要做的就是通过 XML DSL 连接各个部分。
【解决方案2】:
如果你想让Spring中的任何方法异步,你需要做的就是通过<task:annotation-driven/>在xml配置中配置task命名空间。然后,您只需使用@Async 注释该方法,它将在自己的线程中运行。请注意,异步调用将在其自己的事务中运行,因为 Spring 从其内部池中获取一个新线程来为调用提供服务。如果你这样做了,那么你就不需要 JMS 来进行异步处理了。