关于调度任务的问题

本贴最后更新于 1916 天前,其中的信息可能已经时移世异

以前只做过简单的定时任务
现在有这么一个需求,特来请教一下

  1. 调度任务数据库存储,web 页面维护
  2. 需要立即执行
  3. 配置重试机制,比如运行失败,如果有配置了重试的,在多久以后重试一次
  4. 暂停
  5. 启动

相关帖子

被采纳的回答

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    问题是?

    1 回复
  • someone9891

    主要是重试这块,直接 quartz 有还是要自己去怎么实现?任务执行失败,根据配置的次数和间隔去重试,直到成功或者次数用完则等待下一次执行周期

    1 回复
  • 88250

    估计得自己实现了,设计表时多弄几个状态字段和计数字段,然后定时扫表,注意幂等和并发控制,大致就这思路吧。

  • 估计要自己开发一套定时任务调度系统。

  • Ahian 1

    xxl-job

  • 14032 1 2 赞同

    我对 JeeSite 改造版加入了 Quartz 功能,应该符合你的需求, 地址 https://github.com/LYHFUU/jeesite
    04.jpg
    Job.png

    2 回复
  • someone9891

    我学习一下 👍

  • 233333

    👍 copycopy

  • someone9891

    @participants 各位大佬,又来打扰大家了, 我现在定时任务基本的需求能解决,但是又发现一个新的问题。

    quartz 数据库存储模式,已经注册到 quartz 队列中的任务,会在数据库存储,服务器重启以后还是会按照之前的周期运行,
    但是存在一个问题,我在自定义的任务表定义自己的任务。在启动的时候 遍历自己的数据注册到 quartz 中,假如直接在数据库删除了自定义的任务,服务器不管重不重启,那个任务已经注册到 quartz 中了,这种问题怎么解决,目前就是直接在数据库删除了的话,任务还会运行

    如果通过接口删除的时候,可以手动 remove,但是数据库删除就不行了

    1 回复
  • someone9891

    目前我能想到的就是
    1.在启动初始化的时候把 队列清空,但是这就与 quartz 的数据库模式初衷相违背了
    2.任务执行的时候再去数据库自定义的表查询一次,查不到就停止 并 remove 。

  • someone9891 1 评论

    这个竟然不是一个 Q&A

    我帮你改为问答帖了,悬赏积分你自己设置一下 doge
    88250
  • hjljy

    刚好我最近也在搞数据库化的 Quartz 你这个问题可以通过配置解决
    图片.png

    1 回复
  • someone9891

    更新的话,停机的时候错过的任务还会执行吗?比如预定在 2 点执行一次,但是 1 点五十停机了,2 点 10 分重启以后,2 点那一次还会执行吗

    1 回复
  • hjljy

    不會,要等下個兩點才執行

    1 回复
  • someone9891

    那就跟我说的启动的时候清空重新初始化是一样的啊,我是手动初始化,你那个配置对我是没有用的。

    而且正好也违背了 quartz 的 错过还能运行的机制。

    2 回复
  • 14032

    可了解下 CronScheduleBuilder 的三种策略

    withMisfireHandlingInstructionIgnoreMisfires() 
    withMisfireHandlingInstructionDoNothing() 
    withMisfireHandlingInstructionFireAndProceed() 
    
    1 回复
  • someone9891

    好的

  • someone9891

    配置是没错,但是假如我的任务基本信息存在数据库中,quartz 启动的时候,将我配置的任务 添加到 quartz 队列,我再从数据库删除我自己的任务信息,这条在 quartz 中的任务到时间了还是会继续运行的啊

    1 回复
  • 14032 1 1 赞同

    因为已经持久化存储了,手动删库的时候,要同时处理下 quartz 的表 QRTZ_CRON_TRIGGERS、QRTZ_TRIGGERS、QRTZ_JOB_DETAILS,这样 QuartzSchedulerThread 线程获取不到 acquireNextTriggers 触发器,就不会执行

    1 回复
  • someone9891

    对啊,如果在界面维护删除的话没问题,可以处理这些,如果直接 数据库删的话就坑爹了,算了,不想这些了 😭 想太多给自己找麻烦

  • someone9891

    image.png

    目前采用这种方式了,不知道合理不合理,在任务每次执行的时候都去数据库查询以下这条任务在自定义的表里还在不,不在电话就调用删除方法,删除方法中会 删除掉 quartz 队列里面的任务。

  • someone9891

    @participants 我发现我用 springboot 写好的 demo 都没问题了,但是集成到我们到项目里面就不行了,初始化任务可以,但是 到点不执行…… ,我们项目是使用 dubbo 的分布式项目,我只能将定时任务写在 service 层,我猜是因为 service 注册服务到 zookeeper,quartz 其实没有一个 持续的状态在运行 。。。大佬们有什么 方法吗?

    1 回复
  • someone9891

    启动日志截图:
    image.png
    quartz trigger 数据:
    image.png
    jobdetail
    image.png

    image.png

  • hjljy

    不晓得你这个是什么情况,我前两天的项目也是在 dubbo 当中用的 quartz , 具体业务是:创建一个定时任务,进行数据采集,采集完毕后,调用数据校验服务进行校验。用的是 dubbo2.6 注册中心 zk

    1 回复
  • someone9891

    没事了,是我自己把状态搞错了,任务我设置的是暂停。。。1 是暂停 2 是正常,我 一直以为 1 是正常,在数据库插入的是 1

请输入回帖内容 ...

推荐标签 标签

  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • sts
    2 引用 • 2 回帖 • 185 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 9 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    83 引用 • 165 回帖
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 5 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    75 引用 • 258 回帖 • 635 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    220 引用 • 472 回帖
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 619 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 29 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 5 关注
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 663 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 535 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 132 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 73 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    263 引用 • 664 回帖
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    6 引用 • 15 回帖 • 155 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖 • 1 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 268 回帖 • 85 关注
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖 • 1 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    164 引用 • 492 回帖
  • danl
    101 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 2 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    497 引用 • 1387 回帖 • 318 关注
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    6 引用 • 1 回帖 • 1 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    942 引用 • 1459 回帖 • 75 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    176 引用 • 814 回帖
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    84 引用 • 139 回帖