Реализовать Кварцевый Планировщик в муле

Это первый раз, когда я пытаюсь использовать планировщик Quartz в Mule. Я пытаюсь запланировать время начала потока на основе списка DateTimes, который я взял из БД.

Чтобы изучить работу планировщика Quatrz и запланировать задания на основе "списка времен" в Java, я сделал следующий пример.

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

public class Main {

    public static void main(String[] args) throws SchedulerException {
        List<SimpleTrigger> triggerList = scheduleMyJob();

        int i=0;

        for(SimpleTrigger trigger: triggerList){
            JobDetail jobDetail = new JobDetail();
            jobDetail.setJobClass(Hellojob.class);
            jobDetail.setName("MyJob"+ ++i);


            Scheduler jobScheduler = new StdSchedulerFactory().getScheduler();
            jobScheduler.start();
            jobScheduler.scheduleJob(jobDetail, trigger);
        }
    }

    public static List<SimpleTrigger> scheduleMyJob(){
        List<SimpleTrigger> triggerList = new ArrayList<SimpleTrigger>();

        SimpleTrigger sTrigger = new SimpleTrigger();
        sTrigger.setStartTime(new Date(System.currentTimeMillis()+10000));
        sTrigger.setName("C Trigger 1");
        triggerList.add(sTrigger);
        sTrigger = new SimpleTrigger();
        sTrigger.setStartTime(new Date(System.currentTimeMillis()+20000));
        sTrigger.setName("C Trigger 2");
        triggerList.add(sTrigger);
        sTrigger = new SimpleTrigger();
        sTrigger.setStartTime(new Date(System.currentTimeMillis()+30000));
        sTrigger.setName("C Trigger 3");
        triggerList.add(sTrigger);
        sTrigger = new SimpleTrigger();
        sTrigger.setStartTime(new Date(System.currentTimeMillis()+40000));
        sTrigger.setName("C Trigger 4");
        triggerList.add(sTrigger);

        return triggerList;
    }

}

Мой helloJob.java выглядит как..

import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class Hellojob implements Job {

    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        System.out.println(new Date() +": Hello Quartz World!! "+arg0.getJobDetail().getFullName());



    }

}

Это хорошо работает, я получил следующий вывод

Sat Oct 24 15:41:47 IST 2015: Hello Quartz World!! DEFAULT.MyJob1
Sat Oct 24 15:41:57 IST 2015: Hello Quartz World!! DEFAULT.MyJob2
Sat Oct 24 15:42:07 IST 2015: Hello Quartz World!! DEFAULT.MyJob3
Sat Oct 24 15:42:17 IST 2015: Hello Quartz World!! DEFAULT.MyJob4

Теперь я понял, как работает Quartz, но мне трудно связать код Java с концепцией Quartz in mule. Я хочу реализовать то же самое в муле, и позже я смогу заменить даты датами из БД. Если бы вы могли вести меня или показать мне пример, это будет очень полезно. Я знаю только о Кварцевом планировщике, если у вас есть другая идея, всегда пожалуйста...

FYI. Hellojob будет заменен потоком с регистратором в нем.

[Привязка к реализации логики в муле закончилась не где. Так что я не публикую этот код здесь, так как он может дать неправильное предположение о том, что моя настоящая цель!! Выше приведен Java-код]

1 ответ

Для реализации пакетной обработки в Mule вы можете использовать модуль пакетной обработки Mule, который использует кварцевый планировщик и облегчит вашу жизнь. Вы можете назначить CRON-выражение для планирования заданий. Пожалуйста, обратитесь к документации ниже, чтобы узнать, как пакетные задания работают в муле.

https://docs.mulesoft.com/mule-user-guide/v/3.6/batch-processing

https://docs.mulesoft.com/mule-user-guide/v/3.7/batch-streaming-and-job-execution

Другие вопросы по тегам