タイミングタスクの--Quartz
12470 ワード
1.システムでは、動的な変更と手動トリガをサポートするタイミングタスクが最も一般的です.
タイミングタスク項目に多かれ少なかれ使用されるべきです
2.依存関係を最初に追加:
3.定時タスクデータベースの作成:定時タスク記録表、定時タスク記録表、
4.2つのテーブルのエンティティークラスを作成する
5.定時タスク記録表エンティティクラス
6.タイミングタスクインタフェース
7.実装クラス
8.2つのModelクラス、タイミングタスク記録Model
タイミングタスク詳細Model
9.タイミングタスク業務コード類:
コードの送信先:https://github.com/coreyxuy/SSM
タイミングタスク項目に多かれ少なかれ使用されるべきです
2.依存関係を最初に追加:
org.quartz-scheduler
quartz
2.3.0
3.定時タスクデータベースの作成:定時タスク記録表、定時タスク記録表、
CREATE TABLE `cl_quartz_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ' ',
`name` varchar(32) NOT NULL DEFAULT '' COMMENT ' ',
`code` varchar(64) NOT NULL DEFAULT '' COMMENT ' code ',
`cycle` varchar(32) NOT NULL DEFAULT '' COMMENT ' ',
`class_name` varchar(64) NOT NULL DEFAULT '' COMMENT ' ',
`succeed` int(11) NOT NULL DEFAULT '0' COMMENT ' ',
`fail` int(11) NOT NULL DEFAULT '0' COMMENT ' ',
`state` varchar(2) NOT NULL DEFAULT '' COMMENT ' 10- 20- ',
`create_time` datetime NOT NULL COMMENT ' ',
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT=' ';
CREATE TABLE `cl_quartz_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ' ',
`quartz_id` bigint(20) DEFAULT '0' COMMENT ' id',
`start_time` datetime DEFAULT NULL COMMENT ' ',
`time` int(11) DEFAULT '0' COMMENT ' ',
`result` varchar(2) DEFAULT '20' COMMENT ' 10- 20- ',
`remark` varchar(128) DEFAULT '' COMMENT ' ',
PRIMARY KEY (`id`),
KEY `quartz_id` (`quartz_id`)
) ENGINE=InnoDB AUTO_INCREMENT=708 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT=' ';
4.2つのテーブルのエンティティークラスを作成する
/**
*
*/
public class QuartzInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* Id
*/
private Long id;
/**
*
*/
private String name;
/**
*
*/
private String code;
/**
*
*/
private String cycle;
/**
*
*/
private String className;
/**
*
*/
private Integer succeed;
/**
*
*/
private Integer fail;
/**
* 10- 20-
*/
private String state;
/**
*
*/
private Date createTime;
/**
* Id
*
* @return id
*/
public Long getId() {
return id;
}
/**
* Id
*
* @param
*/
public void setId(Long id) {
this.id = id;
}
/**
*
*
* @return
*/
public String getName() {
return name;
}
/**
*
*
* @param name
*
*/
public void setName(String name) {
this.name = name;
}
/**
*
*
* @return code
*/
public String getCode() {
return code;
}
/**
*
*
* @param code
*/
public void setCode(String code) {
this.code = code;
}
/**
*
*
* @return
*/
public String getCycle() {
return cycle;
}
/**
*
*
* @param cycle
*
*/
public void setCycle(String cycle) {
this.cycle = cycle;
}
/**
*
*
* @return
*/
public String getClassName() {
return className;
}
/**
*
*
* @param className
*/
public void setClassName(String className) {
this.className = className;
}
/**
*
*
* @return
*/
public Integer getSucceed() {
return succeed;
}
/**
*
*
* @param succeed
*
*/
public void setSucceed(Integer succeed) {
this.succeed = succeed;
}
/**
*
*
* @return
*/
public Integer getFail() {
return fail;
}
/**
*
*
* @param fail
*
*/
public void setFail(Integer fail) {
this.fail = fail;
}
/**
* 10- 20-
*
* @return 10- 20-
*/
public String getState() {
return state;
}
/**
* 10- 20-
*
* @param state
* 10- 20-
*/
public void setState(String state) {
this.state = state;
}
/**
*
*
* @return
*/
public Date getCreateTime() {
return createTime;
}
/**
*
*
* @param createTime
*
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
5.定時タスク記録表エンティティクラス
/**
*
*/
public class QuartzLog implements Serializable {
private static final long serialVersionUID = 1L;
/**
* Id
*/
private Long id;
/**
* id
*/
private Long quartzId;
/**
*
*/
private Date startTime;
/**
*
*/
private long time;
/**
* 10- 20-
*/
private String result;
/**
*
*/
private String remark;
/**
* Id
*
* @return id
*/
public Long getId() {
return id;
}
/**
* Id
*
* @param Id
*/
public void setId(Long id) {
this.id = id;
}
/**
* id
*
* @return id
*/
public Long getQuartzId() {
return quartzId;
}
/**
* id
*
* @param quartzId
* id
*/
public void setQuartzId(Long quartzId) {
this.quartzId = quartzId;
}
/**
*
*
* @return
*/
public Date getStartTime() {
return startTime;
}
/**
*
*
* @param startTime
*
*/
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
/**
*
*
* @return
*/
public long getTime() {
return time;
}
/**
*
*
* @param time
*
*/
public void setTime(long time) {
this.time = time;
}
/**
* 10- 20-
*
* @return 10- 20-
*/
public String getResult() {
return result;
}
/**
* 10- 20-
*
* @param result
* 10- 20-
*/
public void setResult(String result) {
this.result = result;
}
/**
* @return the remark
*/
public String getRemark() {
return remark;
}
/**
* @param remark the remark to set
*/
public void setRemark(String remark) {
this.remark = remark;
}
6.タイミングタスクインタフェース
/**
* Service
*/
public interface QuartzInfoService{
/**
*
* @param qi
*/
boolean save(QuartzInfo qi);
/**
*
* @param search
* @return
*/
boolean update(Map search);
/**
*
* @param result
* @return
*/
List list(Map result);
/**
*
* @param searchMap
* @param current
* @param pageSize
* @return
*/
Page page(Map searchMap, int current,
int pageSize);
/**
*
* @param paramMap
* @return
*/
QuartzInfo findByCode(String code);
/**
*
* @param paramMap
* @return
*/
QuartzInfo findSelective(Map paramMap);
7.実装クラス
import com.github.pagehelper.Page;
import com.itcorey.domain.QuartzLog;
import com.itcorey.model.QuartzLogModel;
import java.util.Map;
/**
* Service
*/
public interface QuartzLogService {
/**
*
*/
int save(QuartzLog ql);
Page page(Map searchMap, int current,
int pageSize);
}
8.2つのModelクラス、タイミングタスク記録Model
import com.itcorey.domain.QuartzLog;
/**
* Model
*/
public class QuartzLogModel extends QuartzLog {
private static final long serialVersionUID = 1L;
/** - */
public static final String RESULT_SUCCESS = "10";
/** - */
public static final String RESULT_FAIL = "20";
/**
*
*/
private String name;
/**
*
*/
private String resultStr;
/**
*
*
* @return name
*/
public String getName() {
return name;
}
/**
*
*
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
*
*
* @return resultStr
*/
public String getResultStr() {
this.resultStr = convertResult(this.getResult());
return resultStr;
}
/**
*
*
* @param resultStr
*/
public void setResultStr(String resultStr) {
this.resultStr = resultStr;
}
/**
*
* @param result
* @return
*/
public static String convertResult(String result) {
String resultStr = " - ";
if (QuartzLogModel.RESULT_SUCCESS.equals(result)) {
resultStr = " ";
} else if (QuartzLogModel.RESULT_FAIL.equals(result)) {
resultStr = " ";
}
return resultStr;
}
}
タイミングタスク詳細Model
import com.itcorey.domain.QuartzInfo;
import java.util.Date;
/**
* Model
*/
public class QuartzInfoModel extends QuartzInfo {
private static final long serialVersionUID = 1L;
/** - */
public static final String STATE_ENABLE = "10";
/** - */
public static final String STATE_DISABLE = "20";
/**
*
*
* @param state
* @return
*/
public static String stateConvert(String state) {
String stateStr;
if (ChannelModel.STATE_DISABLE.equals(state)) {
stateStr = " ";
} else {
stateStr = " ";
}
return stateStr;
}
/**
*
*/
private String stateStr;
/**
*
*/
private Date lastStartTime;
/**
*
* @return stateStr
*/
public String getStateStr() {
this.stateStr = stateConvert(this.getState());
return stateStr;
}
/**
*
* @param stateStr
*/
public void setStateStr(String stateStr) {
this.stateStr = stateStr;
}
/**
*
*
* @return lastStartTime
*/
public Date getLastStartTime() {
return lastStartTime;
}
/**
*
*
* @param lastStartTime
*/
public void setLastStartTime(Date lastStartTime) {
this.lastStartTime = lastStartTime;
}
}
9.タイミングタスク業務コード類:
/**
* Created by :Corey
* 17:37 2019/2/22
*
*/
public class QuartzInform implements Job {
private static final Logger logger = Logger.getLogger(QuartzInform.class);
/**
*
* @throws ServiceException
*/
public String repayInform() throws ServiceException {
IUserService userService = (IUserService) BeanUtil.getBean("IUserService");
logger.info(" ......");
String quartzRemark = null;
int succeed = 0;
int fail = 0;
int total = 0;
//
List list = userService.getAllUser();
if (!list.isEmpty()) {
for (User user : list) {
System.out.println("user"+user.getUserName());
}
}
logger.info(" ......");
quartzRemark = " "+total+", "+succeed+" , "+fail+" ";
return quartzRemark;
}
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
QuartzInfoService quartzInfoService = (QuartzInfoService)BeanUtil.getBean("quartzInfoService");
QuartzLogService quartzLogService = (QuartzLogService)BeanUtil.getBean("quartzLogService");
QuartzLog ql = new QuartzLog();
Map qiData = new HashMap<>();
QuartzInfo qi = quartzInfoService.findByCode("doRepayInform");
try {
qiData.put("id", qi.getId());
ql.setQuartzId(qi.getId());
ql.setStartTime(DateUtil.getNow());
String remark = repayInform();
ql.setTime(DateUtil.getNow().getTime()-ql.getStartTime().getTime());
ql.setResult("10");
ql.setRemark(remark);
qiData.put("succeed", qi.getSucceed()+1);
}catch (Exception e) {
ql.setResult("20");
qiData.put("fail", qi.getFail()+1);
logger.error(e.getMessage(),e);
}finally{
logger.info(" ");
quartzLogService.save(ql);
quartzInfoService.update(qiData);
}
}
}
コードの送信先:https://github.com/coreyxuy/SSM