Crontab不会触发预定作业

时间:2018-05-02 10:38:58

标签: java multithreading email

我有一个Java程序,它读取文本文件并按顺序处理它们,并在每个文件完成时在单独的线程中触发邮件(使用runnable)。我已将此程序配置为crontab中的cron作业,每15分钟运行一次。

如果上次作业的子线程发送电子邮件的时间超过20分钟,则不会触发cron。如果最后一个子线程仍在执行,我怎样才能每15分钟触发一次该作业?

以下是使用的代码::

EpdFeedLoader.java

public class EpdFeedLoader {
    public static void main(String[] args) throws Exception {
        startProcess(feedFile);
    }

    public static void startProcess(BatchFeedFile feedFile) {
        EpdBatchLoader epdBatchLoader = new EpdBatchLoader(feedFile);
        epdBatchLoader.execute();
    }
}

EpdBatchLoader.java

public class EpdBatchLoader {
    private static void sendDelayedFeedEmail(){
        SendDelayedFeedJobStatusMail delayedFeedEmail = new SendDelayedFeedJobStatusMail();
        delayedFeedEmail.setParameters(//parameters for my email method);
        Thread delayedFeedThread =  new Thread(delayedFeedEmail);
        delayedFeedThread.start();
    }
}

SendDelayedFeedJobStatusMail.java

public class SendDelayedFeedJobStatusMail implements Runnable {

    private MailRequestDTO mailRequestDTO;

    public void setParameters(MailRequestDTO mailRequestDTO){
        this.mailRequestDTO = mailRequestDTO;
    }

    public void sendMail() {
        boolean isSend = false;
        message.setSubject(subject);
        message.setSentDate(Utils.getDateInTimeZone(mailRequestDTO.getCountryCode(),new Date()));
        message.setContent(mailRequestDTO.getMessageContent(), "text/html");
        message.addHeader("Content-Transfer-Encoding", "7bit");
        attachInlineImages(message, mailRequestDTO.getInlineImageMap()); 
        ConfigUtils.logger.info("Ready to Send Delayed Feed Receipt Email for Process Code : " +  mailRequestDTO.getProcessCode().toString());
        Transport.send(message);
        isSend = true;
        ConfigUtils.logger.info("Delayed Feed Receipt Email Sent Successfully for Process Code : " +  mailRequestDTO.getProcessCode().toString());
    }   

    @Override
    public void run(){
        this.sendMail();
    }
}

0 个答案:

没有答案
相关问题