如何通过 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")));
}