【问题标题】:Using spring boot & parallel streams to send emails使用 Spring Boot 和并行流发送电子邮件
【发布时间】:2020-02-20 04:43:13
【问题描述】:

我正在尝试使用 spring-boot 发送电子邮件,但使用并行流发送它以使其不同步。 谁能用代码指出我正确的方向。

这是我目前所拥有的 -

for (String toAddress : emailDto.getToEmailAddresses())  {
   message = new SimpleMailMessage();
   message.setTo(toAddress);
   message.setSubject(emailDto.getSubject());
   message.setText(emailDto.getBody());
   message.setFrom(fromAddress);
   emailSender.send(message);
   _logger.info("Send Email successfully to " + toAddress);
}

我正在尝试按照这些思路做一些事情- toAddresses.parallelStream().forEach(System.out::println); 但是使用并行流来发送每封电子邮件。

【问题讨论】:

  • 考虑有一个专门的邮件服务器负责发送邮件,然后发送到那个。那么你就不需要并行流了。

标签: java spring-boot email parallel-processing


【解决方案1】:

SimpleMailMessage.setTo 已经有多个地址的情况,所以你可以简单地写

message.setTo(emailDto.getToEmailAddresses().toArray(new String[0]))

【讨论】:

  • javaMailSender 是否并行而不是顺序发送电子邮件?
  • javaMailSender 以同步方式发送邮件。它一直等到来自邮件服务器的确认。
  • 要使其异步,只需将 emailSender 包装在 Runnable 类中并使用 java.util.concurrent.ExecutorService。顺便说一句,走这条路,在 spring 属性中修复超时是值得的,比如 mail.smtps.timeout=1000
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多