我应该使用哪个spring库发送带有多线程的电子邮件


问题内容

我的电子邮件太多了。我应该编写调度程序以便向他们发送消息。消息是不同的。我使用的是Spring Framework4.x。

我可以编写简单的类,它连接到SMTP服务器。但是在这种情况下,我也应该编写线程库以便并行发送电子邮件。

spring是否已经编写了库,这使我可以更灵活地完成此任务?我不想使用线程。如果spring已经具有此功能,那就太好了。

为此,我需要Spring集成吗?

最好的祝福,


问题答案:

是的,您绝对可以使用Spring Integration来做到这一点,因为Spring Core
ExecutorChannel可以提供带有的实现TaskExecutor

<channel id="sendEmailChannel">
   <dispatcher task-executor="threadPoolTaskExecutor"/>
</channel>

<int-mail:outbound-channel-adapter channel="sendEmailChannel" mail-sender="mailSender"/>

但是无论如何,您应该记住所有Spring Integration组件都基于Java,并且ExecutorService在后台使用。

从另一方面讲,如果您只需要Spring Integration的邮件发送内容,那将是一项开销,并且可以简单地使用Core Spring
Framework的遗留物(例如JavaMailSenderBean)以及满足您需求@AsyncsendMail方法parallel

更新

你能告诉我在这种情况下我是否需要JMS?

我在这里看不到任何与JMS相关的内容。您integration的解决方案中没有(或至少不显示)任何实际点。我什至可以说,对于电子邮件发送来说,Spring
Integration也是如此。但是,使用Spring Boot,您的SI配置将足够短。从另一方面讲,如果您将更好地研究Spring
Integration,最终将获得更多收益,依靠您的系统的内部和外部组件,通过JMS,AMQP,Kafka等与其他系统配合使用。

坦白说:很多年前,我对Spring Integration的初次认识是由于需要从FTP获取文件并具有自动拾取新文件的能力。我仅在Spring
Integration中找到了解决方案1.0.0.M1。在为<int-ftp:inbound-channel- adapter>我完成了短暂的XML配置之后,我开始喜欢Spring Integration,从那时起,它就成为我生活的一部分。:-)

因此,您可以在简单的应用程序中继续进行Spring Integration,或者JavaMailSender直接使用更正式的解决方案。