У меня есть одна функциональность в онлайн-приложении.Мне нужно отправить квитанцию по почте клиенту после генерации квитанции.Моя проблема в том, что функция почты занимает больше времени, около 20-30 секунд, клиент не мог долго ждать во время онлайн транзакции.
Поэтому я использовал java ExecutorService для независимого запуска почтовой службы [sendMail] и возврата ответа PAGE клиенту, отправлена ли почта или нет.
Правильно ли использовать ExecutorService в онлайн-приложении [запрос Http& Отклик].Ниже мой код.Добрый совет.
@RequestMapping(value="/generateReceipt",method=RequestMethod.GET)
public @ResponseBody ReceiptBean generateReceipt(HttpServletRequest httpRequest,HttpServletResponse httpResponse) {
// Other codes here
...
...
I need run below line independently, since it takes more time. so commeneted and wrote executor service
//mailService.sendMail(httpRequest, httpResponse, receiptBean);
java.util.concurrent.ExecutorService executorService = java.util.concurrent.Executors.newFixedThreadPool(10);
executorService.execute(new Runnable() {
ReceiptBean receiptBean1;
public void run() {
mailService.sendMail(httpRequest, httpResponse, receiptBean);
}
public Runnable init(ReceiptBean receiptBean) {
this.receiptBean = receiptBean1;
return(this);
}
}.init(receiptBean));
executorService.shutdown();
return receiptBean;
}