Spring 3 TaskExecutor を使用して非同期メールを送信するために行ったコードに従います。コードは正常に動作しています。何らかの理由でメールの送信に失敗した場合は、もう一度キューに追加して送信を再試行する必要があるかどうかを知りたいだけです。
Google で検索しましたが、再試行ポリシーに関する情報が得られませんでした。
助けていただければ幸いです!!!
@Service
public class AsyncMailSender implements MailSender {
/* Logger for Search-Controller Class */
public static final Logger LOGGER = Logger.getLogger(AsyncMailSender.class);
@Autowired
private MailSender mailSender;
@Autowired
private TaskExecutor taskExecutor;
@Autowired
private VelocityEngine velocityEngine;
public void send(SimpleMailMessage simpleMessage) throws MailException {
Map<String, Object> modelMap = new HashMap<String, Object>();
modelMap.put("user", "Manoj");
simpleMessage.setText(VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "templates/email.vm", modelMap));
taskExecutor.execute(new AsyncMailTask(simpleMessage));
}
public void send(SimpleMailMessage[] simpleMessages) throws MailException {
for (SimpleMailMessage message : simpleMessages) {
send(message);
}
}
private class AsyncMailTask implements Runnable {
private SimpleMailMessage message;
private AsyncMailTask(SimpleMailMessage message) {
this.message = message;
}
public void run() {
LOGGER.info("Sending Emails" + message.getSubject());
mailSender.send(message);
}
}
}