【发布时间】:2021-11-25 16:40:24
【问题描述】:
@RequestMapping( value = "/resendMail", method = RequestMethod.POST)
public ApiException sendMail(@Valid @RequestBody EmailRequest emailRequest) {
ApiException response = null;
User user = userRepository.findByEmail(emailRequest.getEmail());
if( user!=null) {
// If 1 minute passed do this.
userService.sendVerificationEmail(user, user.getEmail());
response = new ApiException("Link sent to this email,", null, HttpStatus.OK);
}
}
这是我的服务。如果用户在 60 秒内没有发送请求,我想这样做:
SimpleMailMessage simpleMailMessage =new SimpleMailMessage();
simpleMailMessage.setFrom(from);
simpleMailMessage.setTo(to);
simpleMailMessage.setSubject(subject);
simpleMailMessage.setText(content+"http://localhost:8080/confirm-email?id="+ user.getId());
try {
mailSender.send(simpleMailMessage);
} catch (MailException mailException) {
}
【问题讨论】:
-
您是否需要在同一个请求中执行此操作,异步或添加特定队列以供其他应用读取?您可以使用代理模式,并在简单的
staticvarnew ConcurrentHashMap<LocalDateTime,ObjectToResendEmail>();中管理您的逻辑,或者您可以使用 Spring Boot 中的@Async注释来并行化您的流程,或者使用事件驱动的队列、bacth、其他应用程序( sugeested in a large scalabitity )
标签: java spring spring-boot time spring-data-jpa