利用Linux中的crontab实现分布式项目定时任务
@Controller
@RequestMapping("/task/topic")
public class TopicQuartzController {
protected Logger logger = LoggerFactory.getLogger(TopicQuartzController.class);
@Autowired
private LiveTopicService liveTopicService; @RequestMapping("execute")
@ResponseBody
public CommonResult execute(HttpServletRequest request,HttpServletResponse response,String type){
long t1 = System.currentTimeMillis();
logger.error("topic定时器执行开始"+type);
CommonResult result = new CommonResult();
if(QlchatUtil.isEmpty(type)){
result.setMsg("参数为空");
result.setSuccess(false);
return result;
}
try {
switch (type) {
case "autoEndTopic":
this.autoEndTopic();
break;
case "oneWeek":
this.endTopicOneWeek();
break;
default:
break;
}
result.setSuccess(true);
result.setMsg("执行完成" + type);
} catch (Exception e) {
logger.error("topic定时器执行异常" + type, e);
result.setMsg("topic定时器执行异常" + type);
result.setSuccess(false);
}
long t2 = System.currentTimeMillis();
logger.error("topic定时器执行结束"+type+",耗时="+(t2 - t1) + "ms");
return result;
} private void autoEndTopic(){
String sql = "SELECT id_ topicId FROM skg_live_topic lt WHERE lt.`status_` = 'beginning' AND lt.end_time_ IS NOT NULL AND lt.`end_time_` < NOW()";
JdbcTemplate jdbcTemplate = SpringHelper.getBean(JdbcTemplate.class);
List<Map<String, Object>> resultMap = jdbcTemplate.queryForList(sql);
for (Map<String, Object> map : resultMap) {
String topicId = String.valueOf(map.get("topicId"));
try {
LiveTopicPo liveTopicPo = liveTopicService.loadCache(topicId);
liveTopicService.endTopic(liveTopicPo, liveTopicPo.getCreateBy());
}catch (Exception e){
logger.error("autoEndTopic异常" + topicId, e);
}
}
} /**
* 结束之前的没有结束时间的话题,只跑一周
*/
private void endTopicOneWeek(){
String sql = "SELECT id_ topicId FROM skg_live_topic lt WHERE lt.`status_` = 'beginning' AND lt.end_time_ IS NULL AND lt.start_time_ <= (NOW() - interval 48 hour)";
JdbcTemplate jdbcTemplate = SpringHelper.getBean(JdbcTemplate.class);
List<Map<String, Object>> resultMap = jdbcTemplate.queryForList(sql);
for (Map<String, Object> map : resultMap) {
String topicId = String.valueOf(map.get("topicId"));
try {
LiveTopicPo liveTopicPo = liveTopicService.loadCache(topicId);
liveTopicService.endTopic(liveTopicPo, liveTopicPo.getCreateBy());
}catch (Exception e){
logger.error("autoEndTopic异常" + topicId, e);
}
}
}
}
像上面这样写好定时任务的逻辑类 创建一个contab.txt */30 * * * * curl 'http://10.47.161.40:8181/task/topic/execute.do?type=oneWeek'
*/30 * * * * curl 'http://10.47.161.40:8181/task/topic/execute.do?type=autoEndTopic'
里面这样调用方法去执行即可实现分布式项目的定时任务 上面即每30分钟执行一次
利用Linux中的crontab实现分布式项目定时任务的更多相关文章
- 利用Linux中的计划任务+PHP网页程序(转)
利用Linux中的计划任务+PHP网页程序,实现对web服务器运行状况的监测[每5分钟监测一次,并邮件提醒]一.我的监测服务器环境:rhel5.5+apache2.2+php5二.功能描述:写一个PH ...
- Linux中的crontab命令用法
Crontab 在linux中,crontab的用来设置定期执行指定的命令,我们可以用它来指定一些需要重复的事情,Linux系统的用户只需将想要定期要执行的命令序列加到crontab文件中,操作系统即 ...
- 利用Eclipse中的Maven构建Web项目(三)
利用Eclipse中的Maven构建Web项目 1.将Maven Project转换成动态Web项目,鼠标右键项目,输入"Project Facets" 2.依据Dynamic W ...
- 利用Eclipse中的Maven构建Web项目报错(二)
利用Eclipse中的Maven构建Web项目 1.错误描述 [INFO] Scanning for projects... [INFO] [INFO] Using the builder org.a ...
- 利用Eclipse中的Maven构建Web项目报错(一)
利用Eclipse中的Maven构建Web项目 1.在进行上述操作时,pom.xml一直报错 <project xmlns="http://maven.apache.org/POM/4 ...
- 利用Eclipse中的Maven构建Web项目(二)
利用Eclipse中的Maven构建Web项目 1.新建源文件夹,Java Resources鼠标右键,"New-->Source Folder" 2.新建src/main/ ...
- 利用Eclipse中的Maven构建Web项目(一)
利用Eclipse中的Maven构建Web项目 1.新建一个Maven Project,"New-->Other..." 2.选择"Maven Project&qu ...
- Linux中使用Crontab定时监测维护Tomcat应用程序的方法
Linux中使用Crontab定时监测维护Tomcat应用程序的方法 功能需求: 定时监测发布的某项应用程序是否可用,如果不可用,立即执行处理措施,实现自动化运维工作. 监测的应用接口: 新闻接口.天 ...
- Linux 中 IDEA 不能调试(Debug)项目
问题描述: can't debug project on idea linux. 在Linux 中, IDEA能运行项目,但是点击调试项目,弹出警告.警告内容如下: Required connecto ...
随机推荐
- 机器视觉: LBP-TOP
之前介绍过机器视觉中常用到的一种特征:LBP http://blog.csdn.net/matrix_space/article/details/50481641 LBP可以有效地处理光照变化,在纹理 ...
- cas4.2的安装
cas4.2使用的是gradle来构建项目的,项目代码在https://github.com/Jasig/cas下载. 然后之后进入项目的根目录,然后执行gradle来编译项目,如下: gradle ...
- (函数即服务)Faas的现状与未来
刚看到jolestar一位从法律转行程序员的前辈写了一篇Faas现状与未来的文章,里面很多观点都很有启发,或许正如他说的那样,由于Faas能较好的解决资源利用率和开发效率问题,2018年Faas将变得 ...
- bzoj题目分类
转载于http://blog.csdn.net/creationaugust/article/details/513876231000:A+B 1001:平面图最小割,转对偶图最短路 1002:矩阵树 ...
- ubuntu16.04更改源
最近用apt-get安装软件总是提示列表无法全部更新,导致一些软件安装不上,下面我们通过讲/etc/apt/sources.list里为阿里源,实现访问. 第一步: 备份/etc/apt/source ...
- cglib动态代理(即AOP)
Computer.java package com.wh.spring_aop; public class Computer { public void playLOL(){ System.out.p ...
- oracle 行转列函数pivot和unpivot
今天接到业务部门的一个需求,需要对同一公司的不同财务指标进行排序,需要用到oracle的行转列函数unpivot. 财务报表的表结构为: 要实现业务部门的排序筛选功能,需要首先将行数据转为列数据: 使 ...
- 使用XUL开发跨平台桌面应用
先上图: 现在使用html,css,js开发桌面的优势越来越明显了,硬件性能的不断提升,人力成本越发昂贵,用户对界面要求越来越高,全球化下企业间的竞争越发激烈. 桌面软件50%+的工作量都在界面开发这 ...
- android计算屏幕dp
首先我们来了解一些基本元素: px:像素,屏幕上的点. dpi:一英寸长的直线上的像素点的数量,即像素密度.标准值是160dp. /*** 正是因为dpi值其代表的特性,所以android项目的资源文 ...
- 解决springmvc返回json中文乱码
在pringmvc中通过设置@ResponseBody返回json乱码问题,这个问题上网找了很久,发现答案真是人云亦云,奉上我的解决方案: 解决方案一:需要导入 jackson-core-asl-1. ...