计划任务的改造求助

blob.png

请教这个计划最终实现的场景是让一个类按计划被调用。

而我现在想做的场景是 :可以创建不同的计划调用的是同一个类,只是给类传递不同的参数,改怎么实现

评论区

小飞侠2017

2017-11-21 20:27

其实也就是如果这里的实现类能将参数传进去就好了 不知道怎么传

小飞侠2017

2017-11-21 20:34

竟然解决了,哈哈 分享下方案
重写 QuartzPlugin

JobDetail job = JobBuilder.newJob(clazz)
.withIdentity(jobClassName, jobClassName) // name "myJob", group "group1"
.usingJobData("jobSays", "Hello World!")
.usingJobData("myFloatValue", 3.141f)
.build();

//usingJobData就是传入参数
然后在执行的类里面
protected void process(JobExecutionContext context) {

JobKey key = context.getJobDetail().getKey();
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
String jobSays = dataMap.getString("jobSays");
float myFloatValue = dataMap.getFloat("myFloatValue");
System.err.println("每1秒:::"+"Instance " + key + " of DumbJob says: " + jobSays + ", and val is: " + myFloatValue);

}
就能取到了

小飞侠2017

2017-11-21 21:01

还是不行,同一个类竟然不能创建多个job 怎么办怎么办

Jieven

2017-11-22 01:30

整那么复杂干嘛,这不跟多个Controller 调用 一个公共的Biz 一回事吗? 你提取一个Biz就行了

Jieven

2017-11-22 01:42

后续版本会进行改造,支持自定义配置参数

小飞侠2017

2017-11-25 17:33

@Jieven 没明白一个JobDetail 貌似只能支持一个class类,而我的需求是让客户自定义任务,但任务都是同样的操作,传不同的参数