如何通过 java 中的方法在数据库中插入数据后立即在后台发送邮件
how to send mail in background right after insert data in db through method in java
在 Java 中发送邮件让我在页面上等待很长时间,直到所有邮件发送完毕。
我正在通过 daoImpl class 文件方法将数据插入数据库。插入即时消息后以相同的方法发送电子邮件。
如何在插入数据后将邮件进程分开到后台,return到操作层。
public int insertViewInfoDetails(AddViewInfoForm form) throws SQLException, Exception {
//DATABASE INSERT CODE...
pst.setDouble(29, RE_ORDER_LEVEL);
pst.execute();
Logger.getLogger(CLASS_NAME).info("inserted ViewTankInfoDetails - " + form);
StringBuilder emailDesc = new StringBuilder();
emailDesc.append("Customer :: ");
emailDesc.append(CUSTOMER_NAME);
emailDesc.append("\n");
final String getEmailId = "SELECT email_id FROM mst_user";
pst = conn.prepareStatement(getEmailId);
pst.setString(1, CONTAINER_ID);
rs5 = pst.executeQuery();
while (rs5.next()) {
//CALL MAILING METHOD
eMailAfterGettingAlerts(properties, rs5.getString("EMAIL_ID"), emailDesc.toString());
}
rs5.close();
rs5 = null;
return n:
}
我可以创建调度程序吗?不是按时间......但只有当我调用它时应该 运行 在该过程应该停止之后。
您可以在另一个线程中执行它,在 运行nable 接口的实现中设置邮件逻辑,并在循环遍历结果时使用线程执行器执行发送邮件逻辑
运行可用的示例:
class MailSender implements Runnable {
public MailSender(String email,String message) {
this.email=email;
this.message=message;
}
@Override
public void run() {
sendMail(email,message)
}
}
您可以 运行 使用执行程序服务
ExecutorService executorService = Executors.newCachedThreadPool();
while (rs5.next()) {
executorService.submit(new MailSender(rs5.getString("EMAIL_ID"),rs5.getString("EMAIL_MESSAGE")));
}
在 Java 中发送邮件让我在页面上等待很长时间,直到所有邮件发送完毕。
我正在通过 daoImpl class 文件方法将数据插入数据库。插入即时消息后以相同的方法发送电子邮件。
如何在插入数据后将邮件进程分开到后台,return到操作层。
public int insertViewInfoDetails(AddViewInfoForm form) throws SQLException, Exception {
//DATABASE INSERT CODE...
pst.setDouble(29, RE_ORDER_LEVEL);
pst.execute();
Logger.getLogger(CLASS_NAME).info("inserted ViewTankInfoDetails - " + form);
StringBuilder emailDesc = new StringBuilder();
emailDesc.append("Customer :: ");
emailDesc.append(CUSTOMER_NAME);
emailDesc.append("\n");
final String getEmailId = "SELECT email_id FROM mst_user";
pst = conn.prepareStatement(getEmailId);
pst.setString(1, CONTAINER_ID);
rs5 = pst.executeQuery();
while (rs5.next()) {
//CALL MAILING METHOD
eMailAfterGettingAlerts(properties, rs5.getString("EMAIL_ID"), emailDesc.toString());
}
rs5.close();
rs5 = null;
return n:
}
我可以创建调度程序吗?不是按时间......但只有当我调用它时应该 运行 在该过程应该停止之后。
您可以在另一个线程中执行它,在 运行nable 接口的实现中设置邮件逻辑,并在循环遍历结果时使用线程执行器执行发送邮件逻辑
运行可用的示例:
class MailSender implements Runnable {
public MailSender(String email,String message) {
this.email=email;
this.message=message;
}
@Override
public void run() {
sendMail(email,message)
}
}
您可以 运行 使用执行程序服务
ExecutorService executorService = Executors.newCachedThreadPool();
while (rs5.next()) {
executorService.submit(new MailSender(rs5.getString("EMAIL_ID"),rs5.getString("EMAIL_MESSAGE")));
}