利用Linux中的crontab实现分布式项目定时任务
来源:互联网 发布:jcl外国语学院知乎 编辑:程序博客网 时间:2024/06/05 07:18
@Controller@RequestMapping("/task/topic")public class TopicQuartzController {protected Logger logger = LoggerFactory.getLogger(TopicQuartzController.class);@Autowiredprivate LiveTopicService liveTopicService;@RequestMapping("execute")@ResponseBodypublic 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分钟执行一次
阅读全文
0 1
- 利用Linux中的crontab实现分布式项目定时任务
- Linux中的定时任务crontab
- linux中的crontab定时任务
- Linux 中的定时任务crontab
- linux下利用crontab来实现定时任务
- Linux VPS主机利用Crontab实现定时重启任务
- Linux利用crontab设置定时任务
- linux下利用crontab创建定时任务
- linux 利用crontab添加定时任务
- Linux中的crontab定时任务详解
- Linux中的定时任务:at 和 crontab
- Linux中的定时任务at、crontab
- Linux中的定时任务at、crontab
- linux中的定时任务crontab认识
- linux使用crontab实现php定时任务
- linux中使用crontab实现定时任务
- PHP定时任务实现和Linux crontab定时任务
- crontab实现定时任务
- [YTU]_2618 ( B 求类中数据成员的最大值-类模板)
- myeclipse项目编码方式彻底设置
- 深入浅出OOP(五): C#访问修饰符
- android7.0中文API -- LinearLayout
- 快捷键清除浏览器缓存
- 利用Linux中的crontab实现分布式项目定时任务
- [YTU]_2619 (B 友元类-计算两点间距离)
- hdu 5975 树状数组原理题(16亚洲区域赛大连站)
- 2017校招面经(BAT、搜狗、搜狐、一点资讯、360、华为优招)
- 自定义View
- 怎么更改Web Project的 Web Context-root的路径
- 游戏引擎的联想
- ubuntu 安装ssh
- 4.Flume client 开发