定时任务 - 若依cloud -【 132 ~ 133 】

news2024/11/24 8:03:44

132 定时任务相关使用 | RuoYi(单独启动)

1、后台添加定时任务处理类(支持Bean调用、Class类调用)

(1)bean调用

        bean调用:需要添加对应Bean注解@Component@Service。调用方式:ryTask.ryParams('ry')。其中ryTask(bean的名称,如@Component("ryTask")),ryParams(方法名称,' ry '带参数)。

/**
 * 定时任务调度测试
 * 
 * @author ruoyi
 */
@Component("ryTask")
public class RyTask
{
    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
    {
        System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
    }

    public void ryParams(String params)
    {
        System.out.println("执行有参方法:" + params);
    }

    public void ryNoParams()
    {
        System.out.println("执行无参方法");
    }
}

(2)class调用 

        class调用:com.ruoyi.quartz.task.RyTask.ryParams('ry'),不需要加注解。com.ruoyi.quartz.task.RyTask.ryParams,全限定方法名(可带参数)。

(3)代码中的调用方式:feign调用(建议)、依赖子模块后调用

         正常情况下,定时任务里面是没有业务逻辑的。所以代码调用的话有两种方式:

        第一种feign调用。因此,需要依赖于ruoyi-api-system。

        第二种:就是可以依赖于别的其他的子模块。但是这种方式需要自己做拆分,比如说,ruoy-system模块依赖ruoyi-job模块后直接调用。那你就需要把ruoyi-system的service拆出来,拆出来之后,然后在ruoyi-job 的pom.xml引用,然后再去调。

        我这边演示open feign的调用,因为我们ruoyi-api-system中的api都已经写好了,我们直接调就好了。

2、前端新建定时任务信息(系统监控 -> 定时任务)

  1. 任务名称:自定义,如:定时查询任务状态
  2. 任务分组:根据字典sys_job_group配置。方便去筛选,或者控制任务。扩展:可以加上自定义分组,在sys_job_group中加。
  3. 调用方法(调用目标字符串):设置后台任务方法名称参数
  4. 执行表达式:可查询官方cron表达式介绍
  5. 执行策略:定时任务自定义执行策略。当程序遇到问题的时候,他会去执行的一些策略。
  6. 并发执行:是否需要多个任务间同时执行。一个时间点发了十几次请求,这些请求是并发执行还是一个一个顺序执行。即同步和异步的区别。
  7. 状态:是否启动定时任务
  8. 备注:定时任务描述信息

3、点击执行一次,测试定时任务是否正常及调度日志是否正确记录,如正常执行表示任务配置成功。

执行策略详解:
立即执行(所有misfire的任务会马上执行)打个比方,如果9点misfire了,在10:15系统恢复之后,9点,10点的misfire会马上执行

        每天9点钟去执行这个定时任务,但是某个时间段系统挂掉了,导致这个时间段定时任务没有执行成功。然后过了一个小时之后,他系统又恢复了。那么此时就会把这个定时任务马上执行一遍。就相当于你挂掉的这个任务没执行成功,我恢复了之后,马上回去执行。


执行一次(会合并部分的misfire,正常执行下一个周期的任务)假设9,10的任务都misfire了,系统在10:15分起来了。只会执行一次misfire,下次正点执行。

        任务每小时去执行一次,服务器down掉了一天(24个小时)。恢复后本来要执行24次补回来的,但我不想执行这么多,我就执行一次就好了。


放弃执行(所有的misfire不管,执行下一个周期的任务)

         系统恢复后,不做任何操作,按正常的cron继续执行就好了。

4 演示:新增、测试定时任务

(1)RyTask.java:新增 ryTest方法

    public void ryTest(String params)
    {
        System.out.println("类调用-参数" + params);
    }

(2)前端:新增定时任务(在线工具:Cron - 在线Cron表达式生成器 (ciding.cc))

(3)测试方案1:点击执行一次

(4)测试方案2:状态改成可用,正常跑,看日志

5 任务详情:详解

可以通过" 下次执行时间 "核对cron表达式是否正确

6 调度日志:查看每次执行的状态(失败 或 成功)、如果有异常也会显示出来、任务执行消耗的时长

7 演示:代码中的open feign调用定时任务

(1)ruoyi-job#pom.xml:依赖于ruoyi-api-system模块

<!--
    当然你有哪个模块有暴露这个feign调用的话,你就可以直接依赖哪个模块啊,这边的话是直接要用默认的这个系统aip模块(ruoyi-api-system)的。
-->        
<dependency>
   <groupId>com.ruoyi</groupId>
   <artifactId>ruoyi-api-system</artifactId>
</dependency>

(2)RyTask.java:新增 ryTest方法

@Component("ryTask")
public class RyTask
{
    @Autowired
    private RemoteUserService remoteUserService;
    public void ryTest(String params)
    {
        R<LoginUser> loginUser = remoteUserService.getUserInfo(params, "from-source");
        System.out.println("类调用-参数" + loginUser.getData().getUserid());
        System.out.println("类调用-参数" + loginUser.getData().getSysUser());
    }
}

(3)重启、测试成功

(4)类调用方式,异常处理方案1:这边的话是class调用,class调用的话,它是找不到这个bean的啊,我们要通过bean的方式去调用啊

(5)类调用方式,异常处理方案2:SpringUtils.getBean

@Component("ryTask")
public class RyTask
{
    @Autowired
    private RemoteUserService remoteUserService = SpringUtils.getBean(RemoteUserService.class);
    public void ryTest(String params)
    {
        R<LoginUser> loginUser = this.remoteUserService.getUserInfo(params, "from-source");
        System.out.println("类调用-参数" + loginUser.getData().getUserid());
        System.out.println("类调用-参数" + loginUser.getData().getSysUser());
    }
}

(6)查看调度日志(类调用方式异常)

133 定时任务实现详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1071527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java实验(头歌)--java语言之继承多态

文章目录 第一题第二题第三题 第一题 package step1;import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.geom.PathIterator; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.util.Scanner;public class ShapeTrouble …

flutter开发实战-inappwebview实现flutter与Javascript的交互JSBridge

flutter开发实战-inappwebview实现flutter与Javascript的交互JSBridge 在使用webview中&#xff0c;需要实现flutter与Javascript交互&#xff0c;在使用webview_flutter插件的时候&#xff0c;整理了一下webview与Javascript的交互JSBridge&#xff0c;具体可以查看 https:/…

设计模式_模板方法模式

模板方法模式 前言 行为型设计模式 关注对象和行为的分离。 关于父类与子类 调用时候 具体调用的哪一个&#xff1f; 普通方法调用编译时决定左边决定抽象/虚方法调用运行时决定右边决定 介绍 设计模式定义案例模板方法模式父类 定义了业务流程&#xff0c;其中一部分 延…

【韩顺平 零基础30天学会Java】面向对象编程(中级)

面向对象编程&#xff08;基础&#xff09;部分的习题还没看呢&#xff0c;先mark住&#xff01;&#xff01;&#xff01; IDE&#xff08;集成开发环境&#xff09;- IDEA IDE&#xff08;集成开发环境&#xff09;- Eclipse idea设置字体和颜色主题&#xff1a;菜单 file -…

linux相关指令

一、ls 指令 语法&#xff1a;ls [选项] [目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用选项&#xff1a; -a 列出目录下的所有文件&#xff0c;包括以 . 开头的隐含文件。 -d…

【单调栈】下一个更大元素 III

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;下一个排列 写在最后 Tag 【单调栈】【数组】【字符串】 题目来源 556. 下一个更大元素 III 题目解读 找出大于整数的最小整数&#xff0c;这个最小整数必须由原来整数中出现的数字组成。 解题思路 方法一&#xff…

冲刺第十五届蓝桥杯P0003倍数问题

文章目录 原题连接解析代码 原题连接 倍数问题 解析 需要找出三个数字&#xff0c;三个数字之和是k的倍数&#xff0c;并且这个数字需要最大&#xff0c;很容易想到的就是将数组进行倒叙排序&#xff0c;然后三层for循环解决问题&#xff0c;但是这样会导致**时间复杂度很高…

Appium问题及解决:打开Appium可视化界面,点击搜索按钮,提示inspectormoved

打开Appium可视化界面&#xff0c;点击搜索按钮&#xff0c;提示inspectorMoved&#xff0c;那么如何解决这个问题呢&#xff1f; 搜索了之后发现&#xff0c;由于高版本Appium&#xff08;从1.22.0开始&#xff09;的服务和元素查看器分离&#xff0c;所以还需要下载Appium In…

深入了解“注意力”和“变形金刚”-第2部分

一、说明 在上一个故事中,我已经解释了什么是注意力机制,以及与转换器相关的一些重要关键字和块,例如自我注意、查询、键和值以及多头注意力。 在这一部分中,我将解释这些注意力块如何帮助创建转换器网络,并详细

sed 命令

sed是Stream Editor&#xff08;字符流编辑器&#xff09;的缩写&#xff0c;简称流编辑器。 sed 命令是一个面向行处理的工具&#xff0c;它以“行”为处理单位&#xff0c;针对每一行进行处理&#xff0c;处理后的结果会输出到标准输出stdout。sed 命令是很懂礼貌的一个命令&…

CentOS 7 使用Docker

参考资料 Docker命令大全 黑马程序员docker实操教程 &#xff08;黑马讲的真的不错 容器与虚拟机 安装 yum install -y docker Docker服务命令 启动服务 systemctl start docker停止服务 systemctl stop docker重启服务 systemctl restart docker查看docker服务状态 syste…

拨2个号时报错All TAP-Windows adapters on this system are currently in use.

管理员运行addtap.bat 可以看到&#xff0c;有两个TAP-Windows Adapter V9适配器了

拼多多API接口的使用方针如下:

了解拼多多API接口 拼多多API接口是拼多多网提供的一种应用程序接口&#xff0c;允许开发者通过程序访问拼多多网站的数据和功能。通过拼多多API接口&#xff0c;开发者可以开发各种应用程序&#xff0c;如店铺管理工具、数据分析工具、购物比价工具等。在本章中&#xff0c;我…

管易云与网易互客对接集成发货单查询2.0连通编辑订单(管易包裹物流=>互客销售订单物流(修改)V1)

管易云与网易互客对接集成发货单查询2.0连通编辑订单(管易包裹物流>互客销售订单物流&#xff08;修改&#xff09;V1) 来源系统:管易云 管易云是金蝶旗下专注提供电商企业管理软件服务的子品牌&#xff0c;先后开发了C-ERP、EC-OMS、EC-WMS、E店管家、BBC、B2B、B2C商城网站…

在PyCharm中添加anaconda环境

本文略过创建anaconda环境的部分~ 下文默认anaconda环境已经创建好 1. 点击新建项目 2. 1&#xff09;修改项目名称 2&#xff09;选择 “Previously configured interpreter” 曾经配置的解释器 3&#xff09;选择“Add Interpreter” 添加新的解释器 3. 选择 “A…

外包干了2个月,技术退步明显....

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了四年…

javaee之Elasticsearch相关知识

简单说一下Elasticsearch相关知识 其余的参考官网文档 我们还可以用下面的方式来查 看一下原始索引库的模板 下面看一下数据库映射关系 下面就是更改了id1的所有数据 下面是我索引库中的内容 说一下查询之后&#xff0c;一些属性的含义 上面案例是这样理解的 match查询类型会对…

【微信小程序】初始微信小程序

&#x1f5a5;️&#x1f5a5;️&#x1f5a5;️ 博主主页&#xff1a; &#x1f449;&#x1f3fb; &#x1f449;&#x1f3fb; &#x1f449;&#x1f3fb; 糖 &#xff0d;O&#xff0d; &#x1f6a9;&#x1f6a9;&#x1f6a9;微信小程序专栏&#xff1a;微信小程序 &…

设计模式再探——模板方法模式

目录 一、背景介绍二、思路&方案三、过程1.模板方法模式简介2.模板方法模式的类图3.模板方法模式代码4.模板方法模式中的父类为抽象类&#xff0c;为什么不是接口&#xff1f;5.模板方法模式中方法级别的单一职责 四、总结五、升华 一、背景介绍 最近公司在做颗粒业务的时…

关于Chrome浏览器打开某网页报 连接已重置 的解决方法

问题描述&#xff1a; Chrome浏览器&#xff08;117版本&#xff09;昨天打开内网站点正常&#xff0c;今天打开时报连接已重置&#xff0c;网页打不开。其他浏览器打开正常。 解决方案1&#xff1a;刷新DNS &#xff0d;&#xff0d;&#xff0d; 失败 1、 打开命令行窗口 2、…