spring-quartz-定时器实现

Spring-quartz实现定时器(含代码) 立即下载

问题场景

需求:每隔30分钟抓取集群固定文件夹下的数据包进行分析产生报告。

实现方式

1、使用quartz-1.8.5.jar
2、spring-ScheduledExecutorService+TimeTask-定时器实现

解决步骤

a 导入上述的jar包
b 编写作业类

import com.jcraft.jsch.ChannelSftp;
import itext.CommonUtil;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * Created on 2017/9/6
 * Author: youxingyang.
 */
public class Scanner {
    /**
     * 执行作业
     */
    public static void doScanner() {

        String p = "/config.properties";
        Properties props = new Properties();
        InputStream in = Scanner.class.getResourceAsStream(p);
        try {
            props.load(in);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        String host = props.getProperty("sftpTumor.host");
        int port = Integer.parseInt(props.getProperty("sftpTumor.port"));
        String username = props.getProperty("sftpTumor.username");
        String password = props.getProperty("sftpTumor.password");

        ChannelSftp sftp = null;

        try {
	        sftp = FtpUtils.connect(host, port, username, password);
            //doSomething
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sftp.quit();
            sftp.getSession().disconnect();
        }
    }
}
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

import java.util.Properties;

/**
 * Created on 2017/9/6
 * Author: youxingyang.
 */
public class FtpUtils {
    /**
     * 连接sftp服务器
     * @param host     主机
     * @param port     端口
     * @param username 用户名
     * @param password 密码
     * @return
     */
    public static ChannelSftp connect(String host, int port, String username, String password) {

        ChannelSftp sftp = null;
        try {
            JSch jsch = new JSch();
            jsch.getSession(username, host, port);
            Session sshSession = jsch.getSession(username, host, port);
            System.out.println("Session created.");
            sshSession.setPassword(password);
            Properties sshConfig = new Properties();
            sshConfig.put("StrictHostKeyChecking", "no");
            sshSession.setConfig(sshConfig);
            sshSession.connect();
            System.out.println("Session connected.");
            System.out.println("Opening Channel.");
            Channel channel = sshSession.openChannel("sftp");
            channel.connect();
            sftp = (ChannelSftp) channel;
            System.out.println("Connected to " + host + ".");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sftp;
    }
}

c 配置XML

<!-- 配置作业类 -->
    <bean id="scanner" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
	    <property name="targetObject">  
	    <!-- 上面的作业类 -->
	    <bean class="com.xx.Scanner" />  
	    </property>  
	    <!-- 上面的作业类的方法 -->
	    <property name="targetMethod" value="doScanner" />  
	    <property name="concurrent" value="false" /><!-- 作业不并发调度 -->  
    </bean>  
    
    <!-- 配置作业调度的触发方式(触发器) 
    org.springframework.scheduling.quartz.SimpleTriggerBean 第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。
	org.springframework.scheduling.quartz.CronTriggerBean  第二种CronTriggerBean,支持到指定时间运行一次,如每天12:00运行一次等。
	-->
	
	<!-- 第一种 -->
    <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
    <property name="jobDetail" ref="scanner" />  
    <property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 -->  
    <property name="repeatInterval" value="1800000" /><!-- 每30min调度一次 -->  
    </bean>  
	
    <!-- 第二种 
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
    <property name="jobDetail" ref="scanner" />  
    <property name="cronExpression" value="0 0 12 * * ?" /> 每天12:00运行一次 
    </bean> -->  
    
    <!-- 配置调度工厂  -->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
	<property name="triggers">  
	<list>  
	<ref bean="simpleTrigger" />  <!-- 该参数指定的就是之前配置的触发器的名字。 -->
	</list>  
	</property>  
	</bean> 

d 启动Tomcat运行定时器

注意:连接前请确保有权限能连接到相应地址,否则会报超时。

后记:上述XML配置只是用了simpleTrigger运行了一个任务,该任务由一个普通的Scanner类下的doScanner方法实现,那如果想要在此基础上再运行一个定时任务呢?例如每天13点运行另一个不同的任务,该任务由一个普通的Collection类下的doCollection方法实现,配置文件如下:

<!-- 配置作业类 对应simpleTrigger-->
    <bean id="scanner" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
	    <property name="targetObject">  
	    	<bean class="com.business.util.Scanner" /> <!-- 普通的Java类 -->
	    </property>  

	    <property name="targetMethod" value="doScanner" />  
	    <property name="concurrent" value="false" /><!-- 作业不并发调度 -->  
    </bean>  
    <!-- 配置作业类 对应cronTrigger-->
    <bean id="collection" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
	    <property name="targetObject">  
	    	<bean class="com.business.util.Collection" /> <!-- 普通的Java类 -->
	    </property>  

	    <property name="targetMethod" value="doCollection" />  
	    <property name="concurrent" value="false" /><!-- 作业不并发调度 -->  
    </bean>
    
    <!-- 配置作业调度的触发方式(触发器) 
    org.springframework.scheduling.quartz.SimpleTriggerBean 第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。
	org.springframework.scheduling.quartz.CronTriggerBean  第二种CronTriggerBean,支持到指定时间运行一次,如每天12:00运行一次等。
	-->
	
	<!-- 第一种 -->
    <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
	    <property name="jobDetail" ref="scanner" />  
	    <property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 -->  
	    <property name="repeatInterval" value="1800000" /><!-- 每30min调度一次 -->  
    </bean>  
	<!-- 第二种 -->
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
	    <property name="jobDetail" ref="collection" />  
	    <property name="cronExpression" value="0 0 13 * * ?" /> <!-- 每天13点执行 -->
	</bean>
	    
    <!-- 配置调度工厂  -->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
		<property name="triggers">  
			<list>  
				<ref bean="cronTrigger" />		<!-- 该参数指定的就是之前配置的触发器的名字。 -->
				<ref bean="simpleTrigger" />  	<!-- 该参数指定的就是之前配置的触发器的名字。 -->
			</list>  
		</property>  
	</bean>
spring 定时器的两种实现 使用spring 实现的两种定时任务,使用eclipse直接导入就可使用 立即下载

相关推荐

Node-Red系列教程——NodeRed通过OPC UA读取数据并写入mysql

NodeRed通opcua读取西门子数据并存入mysql

鲸鱼姐的专栏 1万+

springboot整合quartz定时器实现定时任务详解

最近需要 做一个按照时间,定时初始化一些信息的功能,研究了一下quartz,也简单了解一下TimerTask,废话不多说。 quartz和TimerTask的区别: timer是jdk自带的(可想而知,肯定是不怎么好用)。 Quartz可以通过cron表达式精确到特定时间执行,而TimerTask不能。Quartz拥有TimerTask所有的功能,而TimerTask则没有...

小糖豆 2万+

kaggle竞赛平台上数据集下载详解

从kaggle 网站上下载数据集既保证了速度又避免了网络的不稳定造成下载失败问题。该平台也可以上传代码作为自己的代码库,不过本人更习惯将代码上传到github上。希望本人整理的kaggle库使用技巧能够帮助到正在阅读本博客的你。此外还有一篇博客针对kaggle数据集下载问题的几个问题的相关文章进行了整理【博客链接】。

li1784506的博客 2万+

Spring Quartz 定时器任务

文章目录Spring Quartz 定时器任务1. 环境介绍2、基于 XML 文件的方式2.1 创建 Job 类2.2 配置 Spring 的 XML 文件2.3 编写测试类3. 基于注解的方式3.1 创建 Job 类3.2 配置 Spring,以支持注解的方式3.3 编写测试类3.4 两个 DEBUG 级别的异常问题 待发现并解决4. Cron 表达式介绍特殊字符解释 Spring Quartz...

sunshinegirl168660的博客 630

Materials Studio多层聚合物建模全流程:从Build Layers到LAMMPS data文件导出避坑指南

本文详细解析了使用Materials Studio构建多层聚合物模型并导出为LAMMPS data文件的全流程。重点剖析了Build Layers工具的核心逻辑、真空层处理技巧,并提供了解决导出过程中Z轴坐标偏移问题的实战方案,特别是如何利用msi2lmp工具的-shift参数进行精准校正,确保模型在LAMMPS中模拟的稳定性和准确性。

hhh00的博客 914

告别地图偏移!手把手教你用MapOnline V1.2在ArcGIS里加载无偏谷歌影像和历史影像

本文详细介绍了如何使用MapOnline V1.2插件在ArcGIS中加载无偏谷歌影像和历史影像,解决GIS工程师长期面临的地图偏移问题。通过三步安装配置、无偏影像加载和时空分析功能,提升地理信息数据的精确度和工作效率,特别适用于城市规划、环境监测等场景。

weixin_29252171的博客 232

spring集成quartz:定时任务的实现

1、前言 在开发中经常会使用定时任务来完成一些扫描任务,比如扫描过期的订单、定时的发布等等。但是在使用定时任务的同时,会调用spring容器的中的一些服务,当注入的时候,总是会报错,或者注入的服务为空。今天记录一下字节在spring集成quzrtz的测试结果。 2、需要的依赖 <!-- spring核心 --> <dependency> <groupId>org.springfra

static_coder的博客 999

【Cadence软件技巧集萃】从Capture到Allergo——分布演示从原理符号导出到网络表

Cadence软件功能多样、性能强大,但是使用起来颇费步骤,尤其是从原理图到网络表的导入步骤,没有经过上手实践还真不一定一次就能搞定哩。本文笔者用将分步演示:1、在Capture软件上绘制原理图;2、将原理图导出网络表;3、在Allergo软件上更新网络表;希望给予使用Cadence的读者有效的帮助1、本文简述了建立Capture项目的步骤,演示了调用元件符号库的方法,并绘制了电气原理图;2、针对加载元件封装库可能遇到的问题,做了排查步骤建议;

qq_33175704的博客 2537

Spring + Quartz 实现定时器

Spring + Quartz 实现定时器1.基于xml2.基于注解 相关文章链接: [ 观前提示: 本文所使用的IDEA版本为ultimate 2019.1,JDK版本为1.8.0_141,Tomcat版本为9.0.12。 本文使用的jar包版本为springframework4.3.18.RELEASE和quartz2.3.2。 1.基于xml 2.基于注解 ...

weixin_43611145的博客 214

《最游记》游戏开发全栈指南:从源码解析到实战部署

本文提供了一份详尽的《最游记》游戏源码全栈开发指南。文章深入解析了这款3D玄幻网游的完整源码结构,涵盖客户端、服务端、引擎和工具链,并提供了从环境搭建、核心模块解析到实战修改与部署的完整流程。对于希望深入理解MMORPG架构的开发者而言,这份指南是宝贵的实战资源。

weixin_28363123的博客 72

码农新宠大对决:GitHub Copilot、通义灵码和CodeLlama谁主沉浮?

本文对三款主流AI编程工具GitHub Copilot、通义灵码和CodeLlama进行了全面对比分析。GitHub Copilot在多语言支持和代码质量上表现突出;通义灵码在中文理解和阿里云生态集成方面优势明显;CodeLlama则以开源可定制见长。文章从代码生成、理解能力、多语言支持、使用体验等维度展开评测,并结合实际案例说明不同开发者群体的适用选择。建议新手可优先考虑通义灵码,经验开发者适合GitHub Copilot,而有定制需求的企业团队则可选择CodeLlama。随着AI技术发展,这些工具将持续

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 675

Spring整合Quartz实现动态定时器

最近在网上查QuartZ的资料 , 很多文章给出的例子都是在application中固定写好计划任务. 这种写死的做法并不实用, 最终看到这篇文章 , 得以实现. 感谢原创作者. 原创链接: http://www.cnblogs.com/xrab/p/5850186.html    一、版本说明 spring3.1以下的版本必须使用quartz1.x系列,3....

diliulian8845的博客 219

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spring quartz定时器动态多任务实现

<br />  项目中经常会碰到需要定时执行的任务,并且需要执行什么任务,以及任务执行的时间都由用户自定义的需求。quartz是比较常用的定时器工具,并且在spring框架中也已经做了很好的集成,所以在以spring+hibernate+struts的主流架构中,我们可以采用quartz来做定时器任务的解决方案,下面,我们来看下如何在项目中使用quartz来做动态多任务定时器功能。<br />      1.简单单任务定时器的spring配置<br />view plaincopy to clipboard

争做优秀java技术博客! 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

spring定时器的实现方式-quartz 实现方式

自定义定时器类继承TimerTask 实现方式

华子的专栏 522

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spring定时器配置的两种实现方式OpenSymphony Quartz和java Timer详解

Spring定时器配置的两种实现方式OpenSymphony Quartz和java Timer详解,代码下载地址:http://www.zuidaima.com/share/1772648445103104.htm

云淡风轻、仅此一抹 6728

Spring 实现Quartz定时器

Quartz了解 需求:小编这里要做一个定时器,定时同步对接方的增量数据,于是开始去了解定时器的用法,看大家都说Quartz框架十分的简单好用于是便使用了这个方式,并了解了这个框架,先上导图。 总的来说,Quartz框架所需的三大元素是:scheduler任务调度器,trigger出发器,jobdetail任务细节。 其中任务调度器里放置要执行的任务,任务细节里放置每个任务的定时执行时间,而触发器...

winnieFighting 240

spring定时器quartz的实现实例

废话不多说,直接上代码,如下 xml配置 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:sche...

zhangyoo 232

Spring整合quartz实现定时器

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33726313的博客 150

java 动态添加定时器_Spring整合Quartz实现动态定时器的示例代码

一、版本说明spring3.1以下的版本必须使用quartz1.x系列,3.1以上的版本才支持quartz 2.x,不然会出错。原因:spring对于quartz的支持实现,org.springframework.scheduling.quartz.CronTriggerBean继承了org.quartz.CronTrigger,在quartz1.x系列中org.quartz.CronTrigge...

weixin_39959569的博客 215

Spring整合Quartz实现动态定时器的示例代码

转自:https://m.jb51.net/article/103504.htmSpring整合Quartz实现动态定时器的示例代码发布时间:2017-01-19 10:29:05 作者:五指少年本篇文章主要介绍了Spring整合Quartz实现动态定时器的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。一、版本说明spring3.1以下的版本必须使用quartz1.x系列,3.1以上...

lch_2016的博客 303
上一篇: 回收站功能实现
下一篇: 发送邮件
sand_clock
博客等级 码龄11年 66粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值