Quartz集成springMVC 的方案二(持久化任务、集群和分布式)

Quartz是一个开放源码项目,专注于任务调度器,提供了极为广泛的特性如持久化任务,集群和分布式任务等。Quartz核心是调度器,还采用多线程管理。

1.持久化任务:当应用程序停止运行时,所有调度信息不被丢失,当你重新启动时,调度信息还存在,,这就是持久化任务。

2.集群和分布式处理:当在集群环境下,当有配置Quartz的多个客户端时(节点),采用Quartz的集群和分布式处理时,我们要了解几点好处Quartz调度是通过触发器的类别来识别不同的任务,在不同的节点定义相同的触发器的类别,这样在集群下能稳定的运行,一个节点无法完成的任务,会被集群中拥有相同的任务的节点取代执行。3)分布式体现在当相同的任务定时在一个时间点,在那个时间点,不会被两个节点同时执行。

delete from qrtz_fired_triggers;delete from qrtz_simple_triggers;delete from qrtz_simprop_triggers;delete from qrtz_cron_triggers;delete from qrtz_blob_triggers;delete from qrtz_triggers;delete from qrtz_job_details;delete from qrtz_calendars;delete from qrtz_paused_trigger_grps;delete from qrtz_locks;delete from qrtz_scheduler_state;CREATE TABLE qrtz_job_details (SCHED_NAME VARCHAR2(120) NOT NULL,JOB_NAME VARCHAR2(200) NOT NULL,JOB_GROUP VARCHAR2(200) NOT NULL,DESCRIPTION VARCHAR2(250) NULL,JOB_CLASS_NAME VARCHAR2(250) NOT NULL,IS_DURABLE VARCHAR2(1) NOT NULL,IS_NONCONCURRENT VARCHAR2(1) NOT NULL,IS_UPDATE_DATA VARCHAR2(1) NOT NULL,REQUESTS_RECOVERY VARCHAR2(1) NOT NULL,JOB_DATA BLOB NULL,CONSTRAINT QRTZ_JOB_DETAILS_PK PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP));CREATE TABLE qrtz_triggers (SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,JOB_NAME VARCHAR2(200) NOT NULL,JOB_GROUP VARCHAR2(200) NOT NULL,DESCRIPTION VARCHAR2(250) NULL,NEXT_FIRE_TIME NUMBER(13) NULL,PREV_FIRE_TIME NUMBER(13) NULL,PRIORITY NUMBER(13) NULL,TRIGGER_STATE VARCHAR2(16) NOT NULL,TRIGGER_TYPE VARCHAR2(8) NOT NULL,START_TIME NUMBER(13) NOT NULL,END_TIME NUMBER(13) NULL,CALENDAR_NAME VARCHAR2(200) NULL,MISFIRE_INSTR NUMBER(2) NULL,JOB_DATA BLOB NULL,CONSTRAINT QRTZ_TRIGGERS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT QRTZ_TRIGGER_TO_JOBS_FK FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) );CREATE TABLE qrtz_simple_triggers (SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,REPEAT_COUNT NUMBER(7) NOT NULL,REPEAT_INTERVAL NUMBER(12) NOT NULL,TIMES_TRIGGERED NUMBER(10) NOT NULL,CONSTRAINT QRTZ_SIMPLE_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT QRTZ_SIMPLE_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP));CREATE TABLE qrtz_cron_triggers (SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,CRON_EXPRESSION VARCHAR2(120) NOT NULL,TIME_ZONE_ID VARCHAR2(80),CONSTRAINT QRTZ_CRON_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT QRTZ_CRON_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP));CREATE TABLE qrtz_simprop_triggers (SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,STR_PROP_1 VARCHAR2(512) NULL,STR_PROP_2 VARCHAR2(512) NULL,STR_PROP_3 VARCHAR2(512) NULL,INT_PROP_1 NUMBER(10) NULL,INT_PROP_2 NUMBER(10) NULL,LONG_PROP_1 NUMBER(13) NULL,LONG_PROP_2 NUMBER(13) NULL,DEC_PROP_1 NUMERIC(13,4) NULL,DEC_PROP_2 NUMERIC(13,4) NULL,BOOL_PROP_1 VARCHAR2(1) NULL,BOOL_PROP_2 VARCHAR2(1) NULL,CONSTRAINT QRTZ_SIMPROP_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT QRTZ_SIMPROP_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP));CREATE TABLE qrtz_blob_triggers (SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,BLOB_DATA BLOB NULL,CONSTRAINT QRTZ_BLOB_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT QRTZ_BLOB_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP));CREATE TABLE qrtz_calendars (SCHED_NAME VARCHAR2(120) NOT NULL,CALENDAR_NAME VARCHAR2(200) NOT NULL,CALENDAR BLOB NOT NULL,CONSTRAINT QRTZ_CALENDARS_PK PRIMARY KEY (SCHED_NAME,CALENDAR_NAME));CREATE TABLE qrtz_paused_trigger_grps (SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,CONSTRAINT QRTZ_PAUSED_TRIG_GRPS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP));CREATE TABLE qrtz_fired_triggers (SCHED_NAME VARCHAR2(120) NOT NULL,ENTRY_ID VARCHAR2(95) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,INSTANCE_NAME VARCHAR2(200) NOT NULL,FIRED_TIME NUMBER(13) NOT NULL,SCHED_TIME NUMBER(13) NOT NULL,PRIORITY NUMBER(13) NOT NULL,STATE VARCHAR2(16) NOT NULL,JOB_NAME VARCHAR2(200) NULL,JOB_GROUP VARCHAR2(200) NULL,IS_NONCONCURRENT VARCHAR2(1) NULL,REQUESTS_RECOVERY VARCHAR2(1) NULL,CONSTRAINT QRTZ_FIRED_TRIGGER_PK PRIMARY KEY (SCHED_NAME,ENTRY_ID));CREATE TABLE qrtz_scheduler_state (SCHED_NAME VARCHAR2(120) NOT NULL,INSTANCE_NAME VARCHAR2(200) NOT NULL,LAST_CHECKIN_TIME NUMBER(13) NOT NULL,CHECKIN_INTERVAL NUMBER(13) NOT NULL,CONSTRAINT QRTZ_SCHEDULER_STATE_PK PRIMARY KEY (SCHED_NAME,INSTANCE_NAME));CREATE TABLE qrtz_locks (SCHED_NAME VARCHAR2(120) NOT NULL,LOCK_NAME VARCHAR2(40) NOT NULL,CONSTRAINT QRTZ_LOCKS_PK PRIMARY KEY (SCHED_NAME,LOCK_NAME)); create index idx_qrtz_j_req_recovery on qrtz_job_details(SCHED_NAME,REQUESTS_RECOVERY);create index idx_qrtz_j_grp on qrtz_job_details(SCHED_NAME,JOB_GROUP); create index idx_qrtz_t_j on qrtz_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP);create index idx_qrtz_t_jg on qrtz_triggers(SCHED_NAME,JOB_GROUP);create index idx_qrtz_t_c on qrtz_triggers(SCHED_NAME,CALENDAR_NAME);create index idx_qrtz_t_g on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP);create index idx_qrtz_t_state on qrtz_triggers(SCHED_NAME,TRIGGER_STATE);create index idx_qrtz_t_n_state on qrtz_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE);create index idx_qrtz_t_n_g_state on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE);create index idx_qrtz_t_next_fire_time on qrtz_triggers(SCHED_NAME,NEXT_FIRE_TIME);create index idx_qrtz_t_nft_st on qrtz_triggers(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME);create index idx_qrtz_t_nft_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME);create index idx_qrtz_t_nft_st_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE);create index idx_qrtz_t_nft_st_misfire_grp on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE); create index idx_qrtz_ft_trig_inst_name on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME);create index idx_qrtz_ft_inst_job_req_rcvry on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY);create index idx_qrtz_ft_j_g on qrtz_fired_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP);create index idx_qrtz_ft_jg on qrtz_fired_triggers(SCHED_NAME,JOB_GROUP);create index idx_qrtz_ft_t_g on qrtz_fired_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP);create index idx_qrtz_ft_tg on qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP);

我在新建一个张表,为了方便页面能对每个任务进行管理,能对具体某个任务设置开始时间、结束时间、执行的方法、删除等,如下面图所示:

大海,别为森林的渺小而沮丧,

Quartz集成springMVC 的方案二(持久化任务、集群和分布式)

相关文章:

你感兴趣的文章:

标签云: