Spring REST客户端 - 在方法完成之前强制响应

时间:2014-06-30 15:25:13

标签: java spring email rest spring-mvc

我正在使用Spring Web 4.0.5编写REST服务,其中一种调用方法是发送电子邮件(使用javax邮件)。发送邮件需要一些时间,但我希望能够在此方法完成之前发送HTTP响应(无论响应,例如200) - 因此在发送邮件之前。它甚至可能吗?最好没有多线程?

@RestController
@RequestMapping(value = "/mails", produces = "application/json")
public class RestMailService{

@Autowired
MailService mailService;

@RequestMapping(value="/test", method = RequestMethod.GET)
public void sendMail(){
mailService.sendMail();
}
}

1 个答案:

答案 0 :(得分:0)

我相信所有可能的解决方案都包括多线程。该线程将由您直接启动或隐藏在消息传递或类似的东西之后。

如果您要使用多线程,请使用一些Executor而不是以下建议new Thread(...).start()

我还要注意,在操作完成之前返回HTTP 200可能会让用户感到有些困惑,因为代码表明操作成功了,实际上操作可能还没有开始。