CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

SpringCloud整合Dubbo3实战高并发下的微服务架构设计研究无Mi-源码交易平台丞旭猿

原标题:SpringCloud整合Dubbo3实战高并发下的微服务架构设计研究无Mi

统一管理项目中所有的调度任务,使用quartz进行任务调度。

SpringCloud整合Dubbo3实战高并发下的微服务架构设计研究无Mi

download:https://www.51xuebc.com/thread-490-1-1.html

设计理念

使用与quartz相关的jar包。我懒得升级。我用的是Quart1.6。

编写一个计划任务管理类。

使用数据库表统一计时任务。

项目启动时,定时任务管理也启动,同时开启定时任务。

创建一个页面来管理数据库的计划任务。如果任务被修改、删除、停止等。,修改相应的计划任务。

当项目停止时,停止计划的任务。

部分实现代码

数据库脚本

如果存在sys_scheduler ,则删除表;

创建表` sys_scheduler `(

` id int(11)NOT NULL AUTO _ INCREMENT,

` cron ` varchar(255)NOT NULL DEFAULT ,

` job_name` varchar(255)默认为NULL,

` job _ class ` varchar(255)NOT NULL DEFAULT ,

` modify_time `日期时间默认为空,

` is _ start` char (1)默认 0 注释任务状态是否已开始,1-开始,0-未开始,

主键(` id `)

)ENGINE=MyISAM默认字符集= utf8

/*表` sys_scheduler` */的数据

插入` sys_scheduler`(`id `,` cron `,` job_name `,` job_class `,` modify_time `,` is_start `)值(1, 0 30 * * *?、样本计划任务、 com.common.job.examplejob 、 2016-05-06 16: 42: 14 、 0 );

定时任务管理(省略数据库操作类)

包com . common . utils;

导入Java . util . iterator;

导入Java . util . list;

导入org . Apache . log4j . logger;

导入org . quartz . cron trigger;

导入org . quartz . jobdata map;

导入org . quartz . job detail;

导入org . quartz . scheduler;

导入org . quartz . schedule exception;

导入org . quartz . scheduler factory;

导入com . common . Dao . sysschedulerdao;

导入com . common . model . sysscheduler;

/**

*定时任务管理类

* @作者ppnie

*/

公共类调度管理器

}

静态scheduler factory sched fact = new org . quartz . impl . STD scheduler factory();

静态调度程序sched = null

static scheduler manager scheduler mgr = null;

private static final Logger Logger = Logger . get Logger(scheduler manager . class . getname());

/**

*创建一个定时任务单例,并初始化和启动定时任务。

* @返回

*/

公共静态SchedulerManager getInstance()

{

if (schedulerMgr == null)

{

scheduler mgr = new scheduler manager();

scheduler mgr . init();

}

返回schedulerMgr

}

/**

*初始化计划任务。

*/

公共void init()

{

尝试

{

sched = sched fact . get scheduler();

}

捕捉(例外e)

{

logger . error(” init 1:”+e . getmessage());

}

start();

/*从数据库启动计划任务*/

SysSchedulerDao ss Dao = new SysSchedulerDao();

list CD lists = ss Dao . getschedulerlistbystart(ss Dao . need _ start);

迭代器IR = CD lists . iterator();

//system . out . println(“-Init Scheduler-“);

while (ir.hasNext())

{

SysScheduler scheduler = IR . next();

scheduleJob(调度程序);

}

}

公共void scheduleJob(SysScheduler调度程序)

{

schedule job(“+scheduler . getid()、scheduler.getJobClass()、scheduler . getcron());

if (isStarted())

{

system . out . println(” Schedule “+scheduler . getjobname()+” class = “+scheduler . getjobclass()+” cron = “+scheduler . getcron());

}

}

/**

*将任务添加到任务计划程序。

* @param jobId任务Id

* @param jobClass任务作业类名

* @param cron计时时间

*设置定时器调度的调度格式:秒、分、日、月、周0 0 12 * *?每天中午12点触发0 15 10 15 *?每月15日10: 15触发0 15 10?* 2-6

*每周一、二、三、四、五10: 15触发

*/

public void scheduleJob(字符串jobId,字符串jobClass,字符串cron)

{

if (isStarted())

{

尝试

{

class cls = class . forname(job class);

job detail job detail = new job detail(jobId,Scheduler。DEFAULT_GROUP,cls);

cron trigger trigger = new cron trigger(jobId,Scheduler。DEFAULT_GROUP,cron);

sched.scheduleJob(jobDetail,trigger);

}

捕捉(例外e)

{

System.out.println(“调度作业在此报告错误”+Job class);

logger . error(” schedule job:”+e . getmessage());

* @param jobId

* @param jobClass

* @param cron

* @param data_map

*/

public void schedule job(String jobId,String jobClass,String cron,String data_map)

{

if (isStarted())

{

system . out . println(” Schedule “+job class+” cron = “+cron);

尝试

{

class cls = class . forname(job class);

job detail job detail = new job detail(jobId,Scheduler。DEFAULT_GROUP,cls);

cron trigger trigger = new cron trigger(jobId,Scheduler。DEFAULT_GROUP,cron);

sched.scheduleJob(jobDetail,trigger);

sched.deleteJob(jobId,调度程序。DEFAULT _ GROUP);

}

捕捉(例外e)

{

logger . error(” delete job:”+e . getmessage());

}

}

/**

*重新发布任务,在这种情况下,根据jobId修改任务执行时间玉米。

* @param jobId

* @param cron

*/

public void resschedule job(String jobId,String cron)

{

尝试

{

job detail JD = sched . getjobdetail(jobId,Scheduler。DEFAULT _ GROUP);

JobDataMap jdm = JD . getjobdatamap();

cron trigger trigger = new cron trigger(“+jobId,Scheduler。DEFAULT_GROUP,cron);

trigger . setjobname(“+jobId);

trigger.setJobGroup(调度程序。DEFAULT _ GROUP);

trigger . setjobdatamap(jdm);

sched.rescheduleJob(jobId,Scheduler。DEFAULT_GROUP,trigger);

}

捕捉(例外e)

{

logger.error(“重排作业:”+e);

}

}

/**

*启动任务计划程序

*只有当调度程序具有实例或待机模式时,才能调用start()方法。

*/

公共void开始()

{

尝试

{

sched . start();

}

捕捉(例外e)

{

logger . error(” start:”+e);

}

}

/**

*关闭任务计划程序Scheduler。

*一旦调用了shutdown()方法,就不能调用start()方法。

*/

公共无效关闭()

{

System.out.println(” -关闭调度程序-“);

尝试

{

sched . shut down();

}

捕捉(例外e)

{

logger . error(” shut down:”+e . getmessage());

}

schedulerMgr = null

}

/**

*判断任务调度器Scheduler是否启动。

* @返回

*/

公共布尔值isStarted()

{

布尔re = false

尝试

{

re = sched . is started();

}

捕捉(例外e)

{

logger . error(” is started:”+e . getmessage());

}

返回re;

}

/**

*判断任务调度器Scheduler是否关闭。

* @返回

* @抛出SchedulerException

*/

public boolean isShutdown()

{

布尔re = false

尝试

{

sched . isshutdown();

}

catch(调度异常e)

{

logger . error(” isShutdown:”+e . getmessage());

}

返回re;

}

/**

*将调度程序设置为待机模式。

*在待机模式下,调度程序会暂时停止查找要执行的作业。

*/

公共void备用(){

System.out.println(” -备用调度程序-“);

尝试{

sched . stand by();

}

捕捉(异常e) {

logger . error(” stand by:”+e . getmessage());

}

}

/**

*确定调度程序是否在待机模式下运行。

*/

公共布尔值isInStandbyMode() {

布尔re = false

尝试{

re = sched . isinstandbymode();

} catch(异常e) {

logger . error(” isInStandbyMode:”+e . getmessage());

}

返回re;

}

/**

*确定任务是否存在。

* @param jobId

* @返回

*/

public boolean checkExists(字符串jobId)

{

布尔re = false

尝试

{

cron trigger trigger =(cron trigger)sched . get trigger(“+jobId,Scheduler。DEFAULT _ GROUP);

返回触发器!= null

}

catch(调度异常e)

{

logger . error(” check exists:”+e . getmessage());

}

返回re;

}

}

随着项目的开始和停止,您可以设置一个servlet,在init方法中初始化任务管理类,并在destory方法中关闭它。

复制

SysSchedulerServlet

com . common . servlet . sysschedulerservlet

0返回搜狐,查看更多

责任编辑:

声明:本文部分素材转载自互联网,如有侵权立即删除 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容