使用特性+反射来做超轻量级的定时调度服务

1、定义特性,特性中包含执行间隔的属性,在每个需要定时调度执行的方法上加上该特性,表示该方法参与定时调度。

2、编写方法,默认在调度服务启动时,会先访问该方法来获取全部需要定时执行的方法和间隔;

3、每个方法执行时,可以向服务返回日志,同时也可以返回下次执行的时间,服务将在指定的时间来调用该服务,默认按调度规则执行。若需要额外指定下次执行的时间可以在返回值中执行;

4、其实可以考虑增加本次调度的间隔参数,以方便被调用服务判断当前执行的间隔是否是常规间隔还是自定义间隔。

-------------------------------------------------------------------------------

代码在公司,后面再贴上来。该工作主要将原有的Windows服务,做得太重,需要导入100多个DLL,现在重新改造,把服务执行和服务调度完全剥离,服务调度(Windows Service)就是一个一百行代码左右的超轻量服务,后续新增或维护服务,均基于接口,不需要对服务、服务配置做任何改动。

原文地址:https://www.cnblogs.com/soleds/p/11619401.html

时间: 2025-01-09 18:44:09

使用特性+反射来做超轻量级的定时调度服务的相关文章

Spring中的定时调度(Scheduling)和线程池(Thread Pooling)

简介 Spring包含了对定时调度服务的内置支持类.当前,Spring支持从JDK1.3开始内置的Timer类和Quartz Scheduler(http://www.opensymphony.com/quartz/).二者都可以通过FactoryBean,分别指向Timer或Trigger实例的引用进行配置.更进一步,有个对Quartz Scheduler和Timer都有效的工具类可以让你调用某个目标对象的方法(类似通常的MethodInvokingFactoryBean操作).Spring

NicEditor——超轻量级文本编辑器

NicEdit是一个轻量级,跨平台的Inline Content Editor.NicEdit能够让任何 element/div变成可编辑或者能够把标准的TextArea转换成富文本编辑器. 相较于以前用过的FreeTextBox,NicEdit更加的轻便,其轻量级的程度--总共就一个JS文件和一张图片,而且使用也十分简单.引用下载好的JS文件,然后调用相应的JS函数,将TextBox控件转变成富文本编辑器. 英文本: <span style="font-size:14px;"&

自己编写的 C++ 超轻量级日志类

[自己编写的 C++ 超轻量级日志类(兼容vc++6.0.vs2010.vs2015)] 先来看效果: [测试文件:test.cpp] /* 作者:闫文山 时间:2017/07/02 介绍: 本日志类功能强大: 1.小巧可爱,全程序(YLog.h+YLog.cpp)不过一百余行而已,比之网上其他的如log4cpp等堪称超轻量级: 2.可输出每条日志信息的日志级别.输出时间(可精确到毫秒级).所在程序文件名.所在行数.日志信息(支持可变长.标准格式化 %s,%d,%f 等参数): 3.兼容性强大,

SpringMVC + Mybatis + SpringSecurity(权限控制到方法按钮) + Rest(服务) + Webservice(服务) + Quartz(定时调度)+ Lucene(搜索引擎) + HTML5 bootstrap + Maven项目构建绝对开源平台

框架整合: Springmvc + Mybatis + Shiro(权限) + REST(服务) + WebService(服务) + JMS(消息) + Lucene(搜搜引擎) + Quartz(定时调度) + Bootstrap Html5(支持PC.IOS.Android) 需要源码请加Q:3121026417   此处[源码获取地址] 框架简介: 项目Maven构建,真实大型互联网架构,做到高并发,大数据处理,整个项目使用定制化服务思想,提供模块化.服务化.原子化的方案,将功能模块进行

Spring整合quartz框架实现任务定时调度

1.  首先需要引入需要的jar包,如上图所示. 2. 编写需要定时调度的测试类: package com.jp.task; import java.util.Date; public class TestTask{ private static int counter = 0; protected void execute() { long ms = System.currentTimeMillis(); System.out.println("\t\t" + "=====

Topshelf结合Quartz.NET实现服务端定时调度任务

这周接受到一个新的需求:一天内分时间段定时轮询一个第三方WebAPI,并保存第三方WebAPI结果. 需求分析:分时段.定时开启.定时结束.轮询.主要工作集中在前三个上,轮询其实就是个Http请求,比较好解决. 技术选型: 1.最简单的方式:Windows Service.Timer.HttpClient. 2.B格高点的方式:Topshelf.Quartz.NET.HttpClient.之所以选用第二种方式的原因: 1.Windows Service尝试写了一个,发现附加进程调试确实麻烦,而且

Spring进阶-怎样集成定时调度Quartz

在一些项目里面比如进销存系统,对一些过期图片的定时清理或者库存不足发出预警提示,就需要用到定时调度技术. 每当经过一段时间,程序会自动执行,就是定时调度.如果要使用定时调度,则必须保证程序始终运行才行哦,也就是说定时调度是在程序之外又启动了一个新的线程.那么怎样才能实现定时调度呢? 方案一:可以使用JDK自带的java.util.Timer对象.可以创建定制的timer或者调用某些方法的timer.包装timer的工作由Spring TimerFactoryBean完成,不过这种方法不能准确设置

基于大数据开发套件定时调度带资源文件的MapReduce作业

MaxCompute里的MR作业,很少是只要跑一次就好了的.如果需要周期性调度,目前MaxCompute(原名ODPS)只提供了计算引擎,任务调度可以使用大数据开发套件来实现.这篇帖子从基础开始,介绍了3种周期性调度的方法.同时还介绍了如何使用资源文件. 代码开发 代码以文档里的WordCount 作为例子.在这个基础上,增加资源文件的读取方法,修改Reduce类.主要的逻辑是读取资源文件,资源文件里的数据格式是字符串1,字符串2.代码逻辑是如果word count里的word如果有在字符串1里

定时调度框架Quartz随笔

最近项目中的定时批处理用到了quartz定时任务,在此记录下quartz的配置吧,一个小demo仅供参考,也方便自己今后复习! 下面直接来步骤吧! 一.首先,要搭起能让quartz正常运行的环境,至少需要三个jar包,spring.jar.quartz.jar.commons-logging.jar,各个jar包版本的话目前具体还不清楚有什么要求,欢迎补充!本人用的如下: 二.jar包引入完毕,写好自己需要执行的任务类,在此给出个简单的demo: import org.quartz.JobExe