推荐一个开源免费java分布式开发框架: http://www.jeesuite.com/
需求:
1.可以通过数据库配置cronExpression表达式,动态修改执行时间
2.不修改服务器环境支持集群架构:即保证集群环境下单实例运行
3.实现业务上的实时开启/停止控制功能
第一步:建立数据表
create table SCHEDULER_CONF ( TRIGGER_NAME VARCHAR2(64) not null, SCHEDULER_NAME VARCHAR2(100) not null, CRON_EXPR VARCHAR2(64) not null, STATUS CHAR(1) not null,--激活状态 RUN_STATUS CHAR(1),--当前运行状态 CONSTRAINT "T_PK" PRIMARY KEY ("TRIGGER_NAME") )
第二步:实现基础控制类
public abstract class BaseSchedulerBean { private String triggerName; protected static Scheduler scheduler; protected static JdbcTemplate jdbcTemplate; protected static JdbcTemplate getJdbcTemplate() { if(jdbcTemplate == null){ jdbcTemplate = InstanceFactory.getInstance(JdbcTemplate.class); } return jdbcTemplate; } public static Scheduler getScheduler() { if(scheduler == null)scheduler = InstanceFactory.getInstance(Scheduler.class); return scheduler; } public void setTriggerName(String triggerName) { this.triggerName = triggerName; } public synchronized void execute(){ try { String latestConExpr = checkExecutable(triggerName); if(latestConExpr == null)return; updateExecutable(true); doJob(); checkConExpr(latestConExpr); } catch (Exception e) { e.printStackTrace(); }finally{ updateExecutable(false); } } public void checkConExpr(String latestConExpr) { try { //check cronExpr valid CronTriggerBean trigger = (CronTriggerBean) getScheduler().getTrigger( triggerName, Scheduler.DEFAULT_GROUP); String originConExpression = trigger.getCronExpression(); //判断任务时间是否更新过 if (!originConExpression.equalsIgnoreCase(latestConExpr)) { trigger.setCronExpression(latestConExpr); getScheduler().rescheduleJob(triggerName, Scheduler.DEFAULT_GROUP, trigger); } } catch (Exception e) { // TODO: handle exception } } /** * 检测当前是否可用:激活状态=Y,运行状态=N<br> * generate by: vakin jiang * at 2012-2-13 * @return */ protected String checkExecutable(String triggerName){ String conExpr = null; try { SqlRowSet rs = getJdbcTemplate().queryForRowSet("SELECT CRON_EXPR FROM SCHEDULER_CONF WHERE STATUS='Y' and RUN_STATUS='N' and TRIGGER_NAME='"+triggerName+"'"); if(rs.next()){ conExpr = rs.getString("CRON_EXPR"); } } catch (Exception e) {} return conExpr; } /** * 更新运行状态<br> * generate by: vakin jiang * at 2012-2-13 * @param runing */ protected void updateExecutable(boolean runing){ String status = runing ? "Y" :"N"; String sql = "UPDATE SCHEDULER_CONF set RUN_STATUS='"+status+"' WHERE TRIGGER_NAME='"+triggerName+"'"; getJdbcTemplate().execute(sql); } public abstract void doJob(); }
以上两步就已经完成,下面就可以直接用了
public class DemoScheduler extends BaseSchedulerBean { /* *@see com.csair.scms.infrastructure.extend.quartz.BaseSchedulerBean#doJob() */ @Override public void doJob() { //do something } }
ps:spring配置可不做任何修改,当然也可以通过重写简化配置
InstanceFactory为一个我们自己写好的spring实例工厂
相关推荐
matplotlib-3.6.3-cp39-cp39-linux_armv7l.whl
numpy-2.0.1-cp39-cp39-linux_armv7l.whl
基于springboot个人公务员考试管理系统源码数据库文档.zip
onnxruntime-1.13.1-cp310-cp310-win_amd64.whl
基于springboot的西山区家政服务网站源码数据库文档.zip
Linux环境下,关于C++静态库的封装和调用代码。 TestLib是库目录。 TestLibCall是调用库的目录。
基于springboot软件技术交流平台源码数据库文档.zip
numpy-1.20.1-cp39-cp39-linux_armv7l.whl
ASP.NET酒店管理系统源码(WPF) 一、源码特点 采用WPF进行开发的酒店管理系统源码,界面相当美观,功能齐全 二、菜单功能 1、预订登记:可选择入住时间、离店时间、所在城市、证件类型,保存、删除、查询、返回 2、住宿结算:新增入住、保存、删除、查询、返回 3、今日盘点:查询、返回 4、查询统计: 5、房间管理:增加房间类型、删除类型、增加房间、删除房间、保存、返回 6、用户管理:增加用户、删除用户、保存、返回 7、系统配置:基本功能 8、显示当前系统时间等功能的实现
坠落的天空小游戏图片和代码
论文描述:该论文研究了某一特定领域的问题,并提出了新的解决方案。论文首先对问题进行了详细的分析和理解,并对已有的研究成果进行了综述。然后,论文提出了一种全新的解决方案,包括算法、模型或方法。在整个研究过程中,论文使用了合适的实验设计和数据集,并进行了充分的实验验证。最后,论文对解决方案的性能进行了全面的评估和分析,并提出了进一步的研究方向。 源码内容描述:该源码实现了论文中提出的新的解决方案。源码中包含了算法、模型或方法的具体实现代码,以及相关的数据预处理、实验设计和性能评估代码。源码中还包括了合适的注释和文档,以方便其他研究者理解和使用。源码的实现应该具有可读性、可维护性和高效性,并能够复现论文中的实验结果。此外,源码还应该尽可能具有通用性,以便在其他类似问题上进行进一步的应用和扩展。
环境说明: 开发语言:python Python版本:3.6.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:pycharm
基于springboot高校学术交流平台源码数据库文档.zip
onnxruntime-1.16.2-cp310-cp310-win_amd64.whl
基于springboot+vue的实践性教学系统源码数据库文档.zip
基于springboot的校园二手物品交易系统源码数据库文档.zip
numpy-1.23.5-cp39-cp39-linux_armv7l.whl
bimdata_api_client-4.0.2-py3-none-any.whl
环境说明: 开发语言:PHP 框架:原生php/thinkphp5 服务器:Apache 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat 11 运行软件:小皮phpStudy
基于SpringBoot的中老年人文化活动平台源码数据库文档.zip