我的电子邮件太多了。我应该编写调度程序,以便向他们发送消息。信息是不同的。我使用spring框架4.x。
我可以编写简单的类,它连接到SMTP服务器。但在这种情况下,我也应该写我的线程库,以便发送电子邮件并行。
spring是否已经编写了库,这给了我更灵活的方法来完成这项任务?我不想使用线程。如果spring已经具备了这个功能,那就太好了。
,我需要Spring集成吗?
诚挚的问候,
发布于 2015-03-11 13:44:21
是的,使用Spring绝对可以做到这一点,因为有一个ExecutorChannel实现可以与Spring中的TaskExecutor一起提供:
<channel id="sendEmailChannel">
<dispatcher task-executor="threadPoolTaskExecutor"/>
</channel>
<int-mail:outbound-channel-adapter channel="sendEmailChannel" mail-sender="mailSender"/>但是无论如何,您应该记住,所有Spring组件都是基于Java的,并且ExecutorService是在后台使用的。
另一方面,如果您只需要从Spring发送邮件,这将是一种开销,可以简单地使用遗留文件(如JavaMailSender )作为sendMail方法的bean和@Async来实现parallel需求。
更新
您能告诉我在这种情况下是否需要JMS吗?
我没看到任何与JMS相关的东西。解决方案中没有(或至少没有显示)任何真正的integration点。同样的,我甚至可以说关于仅仅是为了发送电子邮件。但是,使用Spring,您的SI配置就足够短了。另一方面,如果您最终会更好地学习Spring集成,那么您将获得更多的收益,可以通过JMS、AMQP、Kafka等将您的系统依赖于集成组件,以及外部依赖于其他系统。
老实说:很多年前,我第一次认识Spring是因为需要从FTP中获取文件并能够自动获取新文件。我只在Spring 1.0.0.M1中找到了解决方案。在对<int-ftp:inbound-channel-adapter>进行了简短的XML之后,我喜欢Spring,从那时起,它就成为了我生活的一部分。:-)
因此,这取决于您在您的简单应用程序中继续使用Spring,或者直接使用JavaMailSender来执行更正式的解决方案。
发布于 2015-03-11 13:18:51
您应该使用java执行器框架。例如,您可以编写如下代码:
ExecutorService executor = Executors.newWorkStealingPool();
executor.execute(() -> mailSender.send(mail));https://stackoverflow.com/questions/28987379
复制相似问题