控制器传值,需要根据对应值创建,启动以及对定时任务的相关操作:JobExecutionContext和JobDataMap基本用法,代码待优化,主要是用法吧
第一:控制器,

@RequestMapping("/stopTable")
public String stopTableBei(String tableName,String cron){
String result = "error";
try{
JobService.job(tableName,String cron);//将变量传入service
result = "ok";
}catch (Exception e){
e.printStackTrace();
}
return result;
}

第二:service层


//装载调度器
@Autowired
Scheduler scheduler;
public void job(String tableName) throws SchedulerException, InterruptedException {
// 定义一个触发器
Trigger trigger = newTrigger().withIdentity("trigger1", "group1") // 定义名称和所属的租
.startNow()
//可以链式定义多个值 .usingJobData("test1","Str")
.usingJobData("test2",true)
.usingJobData("test3",'女')
.withSchedule(cronSchedule(cron)) //待优化点
.build(); // 定义一个JobDetail
JobDetail job = newJob(MailJob.class) // 指定干活的类MailJob
.withIdentity("mailjob1", "mailgroup") // 定义任务名称和分组
.usingJobData("email", "admin@110.com") // 定义属性
.usingjobdata("tableName",tableName)//存入传过来的值
.build(); // 调度加入这个job
scheduler.scheduleJob(job, trigger);
System.out.println("当前调度器的id是:"+scheduler.getSchedulerInstanceId()); // 启动
scheduler.start();
}

第三:job类

@Configuration
@DisallowConcurrentExecution
@PropertySource("classpath:quartz.properties")
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
//SimpleFormateSimpleDateFormat smf = new SimpleDateFormat("yyyyMMdd_HHmmss");
//System.out.println(smf.format(new Date().getTime()));
//根据值类型和键获取对应值 trigger
String test1 = context.getTrigger().getJobDataMap().getString("test1");//根据键获取String值
Boolean test2 = context.getTrigger().getJobDataMap().getBoolean("test2");//根据键获取boolean值
Char test3 = context.getTrigger().getJobDataMap().getChar("test3");//根据键获取Char值
System.out.println(test1+"\t"+test2+"\t"+test3);
//根据值类型和键获取对应值 job
String tableName = context.getJobDetail().getJobDataMap().getString("tableName");//取传过来的值
context.getJobDetail().getJobDataMap().getString("email");//二者只是.getJobDetail()和.getTrigger()的不同
}
}

这样不仅可以传值,对于相同但是仅仅是操作对象不同的job,只用实现一个Job的类就够了,

对于JobExecutionContext context这个存放上下文信息的对象可以获取到的信息还有很多,配置JobDetail和Trigger的所有信息都可以获取,这里只写了获取自己传的参数

以上代码是还可以有dao层,还有专门存放任务的数据库,网上看到几个厉害的家伙博客是存放数据库的 大家可以看下

https://www.cnblogs.com/skyLogin/p/6915921.html  ,

https://blog.csdn.net/m0_37872161/article/details/77773966

实现对job的增删改查,以及启动或者关闭状态的控制
看是看出来点意思,但是还没有实践,这因该是任务较多的时候这样配置,感觉任务很少的情况并没有必要。

quartz——JobExecutionContext和JobDataMap的更多相关文章

  1. 浅谈JobExecutionContext与JobDataMap

    1.JobExecutionContext简介 (1)当Scheduler调用一个Job,就会将JobExecutionContext传递给job的execute方法 quartz无法调用job的有参 ...

  2. [异常笔记]required a bean of type 'org.quartz.JobExecutionContext' that could not be found

    *************************** APPLICATION FAILED TO START *************************** Description: Par ...

  3. 浅谈JobExecutionContext & JobDataMap

    JobExecutionContext是什么? 当Scheduler调用一个Job,就会将JobExecutionContext传递给Job的 execute() 方法: Job能通过JobExecu ...

  4. [Quartz笔记]玩转定时调度

    简介 Quartz是什么? Quartz是一个特性丰富的.开源的作业调度框架.它可以集成到任何Java应用. 使用它,你可以非常轻松的实现定时任务的调度执行. Quartz的应用场景 场景1:提醒和告 ...

  5. Spring 4 + Quartz 2.2.1 Scheduler Integration Example

    In this post we will see how to schedule Jobs using Quartz Scheduler with Spring. Spring provides co ...

  6. Quartz任务调度基本使用

    转自:http://www.cnblogs.com/bingoidea/archive/2009/08/05/1539656.html 上一篇:定时器的实现.Java定时器Timer和Quartz介绍 ...

  7. Quartz 在 Spring 中如何动态配置时间--转

    原文地址:http://www.iteye.com/topic/399980 在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度. 有关调度的实现我就第一就想到了Quartz这个开源 ...

  8. quartz集群分布式(并发)部署解决方案-Spring

    项目中使用分布式并发部署定时任务,多台跨JVM,按照常理逻辑每个JVM的定时任务会各自运行,这样就会存在问题,多台分布式JVM机器的应用服务同时干活,一个是加重服务负担,另外一个是存在严重的逻辑问题, ...

  9. Quartz 入门详解

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...

随机推荐

  1. 【454】ML-DL相关链接

    GD(梯度下降)和SGD(随机梯度下降) 机器学习中的Bias和Variance 机器学习之判别式模型和生成式模型 笔记 | 什么是Cross Entropy

  2. Ubuntu上使用Docker打包镜像

    关于这个一开始会有点懵,直白一点就是,把本地路径下的代码放到docker里面去,然后在docker这个隔离环境中运行调用我们的程序.专业解释请自行检索学习. 第一步:创建容器 docker run - ...

  3. readiness与liveness

    一.liveness(存活探针)方式 HTTP GET:对指定的端口和路径执行http get请求,返回非错误代码即代表正常 TCP socket:对指定端口建立TCP链接,链接通过则代表正常 Exe ...

  4. (CSDN迁移) JAVA多线程实现-可控最大并发数线程池(newFixedThreadPool)

    上篇文章中介绍了单线程化线程池newSingleThreadExecutor,可控最大并发数线程池(newFixedThreadPool)与其最大的区别是可以通知执行多个线程,可以简单的将newSin ...

  5. ActiveMQ 安装方法

    1. 打开浏览器,访问网址 http://activemq.apache.org/components/classic/download/ ,下载最新的版本,当前最新版本为5.15.9,根据Activ ...

  6. Linux下将.Asp Core 部署到 Docker容器中

    我们来部署一个简单的例子: 将一个简单的.Aps Core项目部署到Docker容器中并被外网访问 说明: 下面的步骤都是建立在宿主服务器系统已经安装配置过Docker容器,安装Docker相对比较简 ...

  7. 彻底理解Runnable和Thread的区别

    昨天去面试,面试官问了一个问题:Runnable和Thread有什么区别,因为针对这个问题以前有背过,并且网上大多数都是这些结论,所以脱口而出: 1.Thread有单继承的问题: 2.Runnable ...

  8. Centos7下JDK1.8的安装

    1.下载并上传并解压安装包 下载安装包上传到/usr/local目录 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-dow ...

  9. lambd

    匿名函数 1.匿名函数格式 void test01() { []() { cout << "hello world" << endl; }(); } 2使用 ...

  10. 网络爬虫第五章之Scrapy框架

    第一节:Scrapy框架架构 Scrapy框架介绍 写一个爬虫,需要做很多的事情.比如:发送网络请求.数据解析.数据存储.反反爬虫机制(更换ip代理.设置请求头等).异步请求等.这些工作如果每次都要自 ...