我应该使用 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
更正式的解决方案。
我的电子邮件太多了。我应该编写调度程序以便向他们发送消息。消息不同。我使用 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
更正式的解决方案。