前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >任务调度-单体应用定时任务解决方案

任务调度-单体应用定时任务解决方案

作者头像
秋日芒草
发布2019-06-19 10:46:45
4030
发布2019-06-19 10:46:45
举报
文章被收录于专栏:JavaWeb

1. 应用场景

单体应用(并发少、就公司内部使用)、业务比较简单、单一、稳定,传统行业首选,项目初期。

2. 主要方式:

  • Spring XML配置方式,timer。
代码语言:javascript
复制
<bean id="cycleBonusTimer" class="cn.edu.wx.distribution.timer.CycleBonusTimer"></bean>
<!-- 定时器相关,用于发放奖金 -->
<task:scheduled-tasks> 
	<task:scheduled ref="cycleBonusTimer" method="run" cron="0 0/1 * * * ?"/>
</task:scheduled-tasks>
代码语言:javascript
复制
public class CycleBonusTimer {
	public void run(){
		//业务
	}
}
  • Spring 注解方式,@Scheduled。
代码语言:javascript
复制
@Component
public class Scheduler {
    @Scheduled(cron = "0 30 0 * * *")
    public void profitComputeTask() {      
        logger.info("======================================start profitComputeTask======================================");  
        taskService.handleProfitCompute();
        logger.info("======================================end profitComputeTask======================================");  
    }
}
  • Spring 异步利用多线程处理,@Async。
代码语言:javascript
复制
@Component
public class TestAsyncBean {
    @Async
    public void sayHello3() throws InterruptedException {
        Thread.sleep(2 * 1000);//网络连接中 。。。消息发送中。。。
        System.out.println("我爱你啊!");
    }
}

3. 总结:

从XML到注解,在从注解到异步处理,配置使用方式越来越简单,性能越来越好;但同时暴露了这三种方式缺点:

  • 扩展性不高(每次业务迭代都需要修改应用代码)
  • 性能也受单机资源的限制、
  • 代码侵入性太高
  • 方式单一
  • 没监控(调度是否成功只能通过数据或LOG来定位)、没通知提醒(Email)
  • 单机容错率低
  • .....

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档