Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Quartz的动态作业数据_Java_Spring_Quartz Scheduler - Fatal编程技术网

Java 使用Quartz的动态作业数据

Java 使用Quartz的动态作业数据,java,spring,quartz-scheduler,Java,Spring,Quartz Scheduler,当我的进程收到一条消息时,它需要启动一个计时器并在X秒内执行一些逻辑。这些作业需要存储在JDBC存储中,据我所知,这可能与这个问题无关 根据我所读到的内容,我应该能够为一个作业类分配具有不同属性值的JobDataMap,但是我找不到任何文档或示例来支持这个用例。也许我的谷歌搜索引擎很弱 这有意义吗?拥有一个作业类,并以某种方式存储JobDataMap以填充该作业类,并按每条消息运行它?您好cansando(您会说西班牙语??)。 我要给你们举一个石英的例子 public static void

当我的进程收到一条消息时,它需要启动一个计时器并在X秒内执行一些逻辑。这些作业需要存储在JDBC存储中,据我所知,这可能与这个问题无关

根据我所读到的内容,我应该能够为一个作业类分配具有不同属性值的JobDataMap,但是我找不到任何文档或示例来支持这个用例。也许我的谷歌搜索引擎很弱

这有意义吗?拥有一个作业类,并以某种方式存储JobDataMap以填充该作业类,并按每条消息运行它?

您好cansando(您会说西班牙语??)。 我要给你们举一个石英的例子

public static void main(String[] args) {

        SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
        try {

            Scheduler sched;
            sched = schedFact.getScheduler();

            sched.start();

            JobDetail jobd = new JobDetail("instruccion", "instrucciones",
                    Mensaje.class);

//          TriggerExample trigger = new TriggerExample("instruccion",
//                  "instrucciones");

            jobd.setRequestsRecovery(true);
            SimpleTrigger trigger2 = new SimpleTrigger("lanzador principal", "lanzadores", "instruccion","instrucciones" , Calendar.getInstance().getTime(), null, 100, 10000);

            trigger2.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW);
            sched.scheduleJob(jobd, trigger2);

            //      
            // }
        } catch (SchedulerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    };


public class Mensaje implements Job {


    @Override
    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        System.out.println("Hola Mundo");

    }

}


public class TriggerExample extends Trigger {

    /**
     * 
     */
    private static final long serialVersionUID = -4926331843008217753L;

    Date fechaAEjecutar;


    public TriggerExample(){

        super();
    }

    public TriggerExample(String name){
        super(name);
    }

    public TriggerExample(String name, String group){
        super(name, group);
    }

    public TriggerExample(String name, String group,String jobname, String jobgroup){
        super(name,group,jobname,jobgroup);
    }



    @Override
    public Date computeFirstFireTime(Calendar arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int executionComplete(JobExecutionContext arg0,
            JobExecutionException arg1) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public Date getEndTime() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Date getFinalFireTime() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Date getFireTimeAfter(Date arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Date getNextFireTime() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Date getPreviousFireTime() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Date getStartTime() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public boolean mayFireAgain() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void setEndTime(Date arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void setStartTime(Date arg0) {
        this.fechaAEjecutar = arg0;
        System.out.println("Cargue la fecha el data con valor\n");
        System.out.println(this.fechaAEjecutar.getTime());

    }

    @Override
    public void triggered(Calendar arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void updateAfterMisfire(Calendar arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void updateWithNewCalendar(Calendar arg0, long arg1) {
        // TODO Auto-generated method stub

    }

    @Override
    protected boolean validateMisfireInstruction(int arg0) {
        // TODO Auto-generated method stub
        return false;
    }

}
在这一行中,SimpleTrigger Trigger 2=新的SimpleTrigger(“lanzador principal”、“lanzadores”、“Instrucions”、“Instrucions”、Calendar.getInstance().getTime(),null,100,10000)


您可以设置执行和重复的时间。

org.quartz.Trigger
既有
getJobDataMap()
(如果需要,它将
new
增加一个)又有
setJobDataMap()
来获取触发器的时间

最简单的用法是:

Trigger t = new SimpleTrigger(...);
t.getJobDataMap().put("foo", "bar");
要使用现有值映射初始化,请执行以下操作:

Map data = new HashMap();
data.put("foo", "bar");

t.setJobDataMap(new JobDataMap(data));
在作业执行时获取数据

public void execute(JobExecutionContext context) throws JobExecutionException
{
   String fooValue = context.getMergedJobDataMap().get("foo");
}

在教程中