quartz

Does Quartz support execute once on multiple node?

為{幸葍}努か 提交于 2021-02-17 02:46:05
问题 In my scenario, Quartz will run embedded within my web application which will be deployed on two nodes. Could I schedule a task and make it execute only once on the two nodes? Is DisallowConcurrentExecution annotation used for this purpose? For example, if I schedule a task with a per hour trigger, could the total execute count of the task in a day on the two node be 24 instead of 48? 回答1: You can set the quartz to be in clustered mode.The main requirement for it is both the instances of your

quartz定时任务实例

余生颓废 提交于 2021-02-16 13:04:12
一、spring注解方式 <!--<!–配置文件添加允许Spring注解–>--> <!--<task:annotation-driven scheduler="qbScheduler"/>--> <!--<task:scheduler id="qbScheduler" pool-size="10"/>--> <!--类--> import org.springframework.scheduling.annotation.Scheduled class XXX{ @Scheduled(cron="0 */2 * * * ?") //这里是两分钟触发一次 public void METHOD(){ //方法要做的事 } } 二、XML方式 <?xml version="1.0"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="quartzProperties"> <props><!--用于存储内存中的调度信息--> <prop

Spring boot下@Autowired 注入为 NULL的问题

空扰寡人 提交于 2021-02-13 14:05:34
问题描述: 在springboot项目中集成quartz时,需要使用到一个import org.springframework.scheduling.quartz.SchedulerFactoryBean这个类,并需要自动注入,在测试代码时,发现无法注入到普通.class文件中,后台报错提示:空指针异常。通过断电调试,发现时SchedulerFactoryBean这个类为NULL。 问题解决方案: 1.根据springboot 框架的注入方式检查,@Autowired 注解正确,因为引用的框架本身的类,不需要在SchedulerFactoryBean类文件上加上@Component,所以本身没错。 2.采用另外的方式进行解决: @Autowired private SchedulerFactoryBean schedulerFactoryBean; private static QuartzManager quartzManager; /** * 通过@PostConstruct实现初始化bean之前进行的操作 * @desc 初始化操作,得到QuartzManager实例 * @Date 2019年1月7日 */ @PostConstruct public void init() { quartzManager = this ; quartzManager

一口气说出“6种”延时队列实现方法,面试官也得服

倾然丶 夕夏残阳落幕 提交于 2021-02-11 21:53:31
下边会介绍多种实现延时队列的思路。其实哪种方式都没有绝对的好与坏,只是看把它用在什么业务场景中,技术这东西没有最好的只有最合适的。 一、延时队列的应用 什么是延时队列?顾名思义:首先它要具有队列的特性,再给它附加一个延迟消费队列消息的功能,也就是说可以指定队列中的消息在哪个时间点被消费。 延时队列在项目中的应用还是比较多的,尤其像电商类平台: 1、订单成功后,在30分钟内没有支付,自动取消订单 2、外卖平台发送订餐通知,下单成功后60s给用户推送短信。 3、如果订单一直处于某一个未完结状态时,及时处理关单,并退还库存 4、淘宝新建商户一个月内还没上传商品信息,将冻结商铺等 。。。。 上边的这些场景都可以应用延时队列解决。 二、延时队列的实现 我个人一直秉承的观点:工作上能用 JDK 自带 API 实现的功能,就不要轻易自己重复造轮子,或者引入三方中间件。一方面自己封装很容易出问题(大佬除外),再加上调试验证产生许多不必要的工作量;另一方面一旦接入三方的中间件就会让系统复杂度成倍的增加,维护成本也大大的增加。 1、DelayQueue 延时队列 JDK 中提供了一组实现延迟队列的 API ,位于 Java.util.concurrent 包下 DelayQueue 。 DelayQueue 是一个 BlockingQueue (无界阻塞)队列,它本质就是封装了一个

Spring Boot Quartz 分布式集群任务调度实现

不打扰是莪最后的温柔 提交于 2021-02-10 22:48:39
Spring Boot Quartz 主要内容 Spring Scheduler 框架 Quartz 框架,功能强大,配置灵活 Quartz 集群 mysql 持久化定时任务脚本(tables_mysql.sql) 介绍 在工程中时常会遇到一些需求,例如定时刷新一下配置、隔一段时间检查下网络状态并发送邮件等诸如此类的定时任务。 定时任务本质就是一个异步的线程,线程可以查询或修改并执行一系列的操作。由于本质是线程,在 Java 中可以自行编写一个线程池对定时任务进行控制,但这样效率太低了,且功能有限,属于重复造轮子。 分布式任务调度应用场景 Quartz的集群功能通过故障转移和负载平衡功能为您的调度程序带来高可用性和可扩展性。 调度程序中会有很多定时任务需要执行,一台服务器已经不能满足使用,需要解决定时任务单机单点故障问题。 用Quartz框架,在集群环境下,通过数据库锁机制来实现定时任务的执行;独立的 Quartz 节点并不与另一其的节点或是管理节点通信。 Spring Scheduler 实现定时任务 1.定义 Task 类 /** * Spring Scheduled示例 */ @Component public class ScheduledTask { private static final SimpleDateFormat dateFormat = new

Quartz.Net使用教程

血红的双手。 提交于 2021-02-09 12:22:16
在项目的开发过程中,难免会遇见后需要后台处理的任务,例如定时发送邮件通知、后台处理耗时的数据处理等,这个时候你就需要 Quartz.Net 了。 Quartz.Net 是纯净的,它是一个.Net程序集,是非常流行的Java作业调度系统Quartz的C#实现。 Quartz.Net 一款功能齐全的任务调度系统,从小型应用到大型企业级系统都能适用。功能齐全体现在触发器的多样性上面,即支持简单的定时器,也支持Cron表达式;即能执行重复的作业任务,也支持指定例外的日历;任务也可以是多样性的,只要继承IJob接口即可。 对于小型应用, Quartz.Net 可以集成到你的系统中,对于企业级系统,它提供了Routing支持,提供了Group来组织和管理任务,此外还有持久化、插件功能、负载均衡和故障迁移等满足不同应用场景的需要。 Hello Quartz.Net 开始使用一个框架,和学习一门开发语言一样,最好是从Hello World程序开始。 首先创建一个示例程序,然后添加Quartz.Net的引用。 Install-Package Quartz -Version 3.0.7 我们使用的是当前最新版本3.0.7进行演示。添加引用以后,来创建一个Job类 HelloQuartzJob 。 public class HelloQuartzJob : IJob { public Task

光安保费就2050万美元,扎克伯格1元年薪是骗人的?

限于喜欢 提交于 2021-02-06 01:09:54
热点追踪 / 深度探讨 / 实地探访 / 商务合作 硬核内参是腾讯新闻、硅谷洞察等联合打造的通信、科技和互联网领域的科普栏目,好看,专业,带你打开眼界。 5月28日,美国股东维权团体、企业监管机构机构股东服务公司(ISS)就扎克伯格的薪酬向Facebook开炮了!ISS调查发现,扎克伯格2019年的安保费高得出奇,达到了2050万美元。并且,ISS称Facebook目前的高管薪酬制定机制过于宽泛,缺乏客观的业绩衡量标准。ISS此前还高声音呼吁,要Facebook的股东在5月27日召开的年度股东大会上投票反对Facebook高管的薪酬机制。 扎克伯格2019年的薪资究竟有多高?股东的意见能够撼动他未来的薪酬吗?当你了解了科技巨头高管薪酬背后的秘密,就会发现,这可能性多么微乎其微。 美国科技巨头CEO薪资有多高? 谈到硅谷科技巨头高管的薪资,我们就不能不说硅谷“1美元俱乐部”。“1美元俱乐部”的代表就是扎克伯格。扎克伯格2019年总薪资为2340万美元,但是,他的基础工资只有1美元。 同样拿1美元基础工资的还有Snap CEO和联合创始人斯皮格尔。当然,斯皮格尔实际总薪资远远低于扎克伯格,只有167万美元。 通常情况下,选择拿1美元基础工资的都是大型上市公司的创始人,他们对公司具有足够的控制权,通过股票能够拿到足够的薪资,不需要担心收入的问题。 此外,这样做还有诸多好处

quartz + spring定时任务调度

淺唱寂寞╮ 提交于 2021-01-21 14:27:27
最近要用到squartz来配置定时任务调度,网上搜了许多资料,也查了许多实例代码,大抵基本的调度代码都如下所示: 如下代码转自:http://blog.csdn.net/sambino/article/details/3934670,sambino的专栏。 1. javabean类 在Test.QuartzJob中 package Test; public class QuartzJob { public void work() { System.out.println("Quartz的任务调度!!!"); } } 2. 设置Spring的xml 我新建了一个applicationContext_quartz.xml,内容如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:jee=" http://www.springframework.org/schema/jee " xsi:schemaLocation=" http://www.springframework.org/schema/beans http

spring quartz 部分定时任务不执行问题定位修复方案

吃可爱长大的小学妹 提交于 2021-01-21 12:39:03
Quartz部分定时任务不执行问题分析过程及修复方案 背景: 2021年1月7号上线迁移需求之后,出现最为明显的 众帮文件上传 其他部分定时任务也不执行的情况 执行时间并没有按照约定时间去执行 分析1 怀疑是代码问题? 对众帮文件上传定时任务代码进行排查 并无发现编码问题,并且对1月7号上的版本 和上一个版本进行代码比对 并未发现对众邦的代码有所改动的地方 分析2 项目定时任务框架 spring quartz 内部任务存储 调度问题? Quartz 是基于RAMJobStore调度中心去调度的,里面有Job(任务),Trigger(触发器)。 通过对项目定时任务代码的了解 及源码的分析 得知: 项目启动时 会把applicationContext-quartz.xml配置文件中的所有定时任务加载到jobDefinitions 这个队列中,遍历jobDefinitions 把每个定时任务的 job 和 Trigger获取到,通过Quartz API 把定时任务添加到RAMJobStore, 经过对jobDetail的校验 ,这里主要是校验name,group,jobClass 是否为空,然后jobDetail的下次触发时间是否合法 然后添加到RAMJobStore(JobWrapper, TriggerWrapper)中。 秉着这一逻辑思想 1月14号上线 项目重启后 拉取项目

定时任务自动生成统计结果

一世执手 提交于 2021-01-18 16:30:11
一 需求 每天凌晨1点自动生成前一天的统计数据 二 定时任务实现方式 1 Timer 使用jdk的Timer和TimerTask可以实现简单的间隔执行任务,无法实现按日历去调度执行任务 2 ScheduledThreadPool线程池 创建可以延迟或定时执行任务的线程,无法实现按日历去调度执行任务 3 quartz 使用Quartz实现 Quartz 是一个异步任务调度框架,功能丰富,可以实现按日历调度 4 Spring Task Spring 3.0后提供Spring Task实现任务调度,支持按日历调度,相比Quartz功能稍简单,但是开发基本够用,支持注解编程方式 二 集成Spring Task 1 启动类添加注解 statistics启动类添加注解 @EnableScheduling 2 创建定时任务 @Slf4j @Component public class ScheduledTask { @Autowired private DailyService dailyService; @Scheduled(cron = "0/3 * * * * *") public void task1(){ log.info("task1 在执行......"); } @Scheduled(cron = "0 0 1 * * ?") public void