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

Which library of spring should I use to send emails with multy-threading

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

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

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

我需要 Spring 集成吗?

此致,

你应该使用 java 执行器框架。例如,您可以编写如下代码:

ExecutorService executor = Executors.newWorkStealingPool();
executor.execute(() -> mailSender.send(mail));

是的,您绝对可以通过 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 这样的核心 Spring 框架遗留作为bean 和 @Async 用于 sendMail 方法来实现您的 parallel 要求。

更新

could you tell me whether I need JMS for this situation?

我在这里没有看到任何与 JMS 相关的内容。您的解决方案中没有(或至少没有显示)任何真实的 integration 点。我什至可以说 Spring 仅用于电子邮件发送的集成。然而,使用 Spring 启动您的 SI 配置将足够短。从另一方面来看,如果您更好地研究 Spring 集成,最终您将获得更多的收益来依赖系统的集成组件,无论是在内部还是在外部,通过 JMS、AMQP、Kafka 等与其他系统。

老实说:很多年前,我第一次接触 Spring 集成是因为需要从 FTP 获取文件并能够自动获取新文件。我仅在 Spring 集成 1.0.0.M1 中找到了解决方案。在 <int-ftp:inbound-channel-adapter> 的 XML 配置之后,我喜欢 Spring 集成,从那时起它就成为我生活的一部分。 :-)

因此,您可以继续 Spring 将其集成到您的简单应用程序中,或者直接使用 JavaMailSender 更正式的解决方案。