abpvnext后台工作者使用quartz扩展的一些思路和使用细节记录--(未完待续)

这篇具有很好参考价值的文章主要介绍了abpvnext后台工作者使用quartz扩展的一些思路和使用细节记录--(未完待续)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求背景描述:

我有一个温湿度数据采集的物联网系统,每个租户都需要定时执行若干种任务, 不同的租户, 他定时执行的间隔不一样 ,比如 

A租户,数据保存间隔60秒,数据是否超限的轮询间隔是是600秒, 

B租户,数据保存间隔是300秒,数据是否超限的轮询间隔是1800秒。


经过查阅abp官网文档,和quartz资料,得到如下思路:

1、用quartz来排队执行后台工作者,需要一个job执行队列表。

2、搞一个定时任务,最简单的比如timer,然后定时去获取所有租户的定时任务间隔时间,看看是否有修改,有修改就按照新的定时任务轮询间隔,给job表按租户更新新的执行队列行。

3、然后quartz就不停的排队定时去job执行对列表中领取任务执行。


具体执行思路如下:

1、定义 一个job队列表,包含字段:

任务id,租户id,执行的业务类型(按setinfo表对应的设置字段名来填,也可以理解为任务组别),任务名称,执行时间间隔,开始执行时间,停止执行时间,上次执行时间,下次执行时间,执行次数(可选),失败次数(可选),执行状态锁(1执行中,0空闲中),任务状态(0,停止,1启动)。

job队列表以租户和执行的业务类型2个字段来判断唯一值,每个租户同一个执行类型只允许有一行数据。

比如租户A,执行类型offline ,执行周期60秒

租户B,执行类型savetime,执行周期1800秒

2、搞一个普通的后台工作者,比如定时1分钟去扫描一次setinfo表,然后遍历分析看看每个租户的各项需要执行的判定周期是否有变动,如果有变动就到job队列表,新增或者修改这个租户对应的执行业务类型的周期值。

3、搞个quartz后台工作者,定期调用业务执行类PeriodicJudgmentService类的PeriodicJudgmentData方法,这个方法业务为:

读取job队列表数据,遍历所有job数据行,

如果当前时间和job行上次执行时间的差是大于job的执行时间间隔列的值(2023-6-1新思路修改为用下一次执行时间来与当前时间比较,当前时间大于下次执行时间就执行一次),我们就需要根据租户ID查询到setinfo、tmplist、descList信息装填到定义的变量,做好数据准备。

然后根据job的类型,将上面准备好的数据变量做参数传递,去调用执行指定的业务逻辑方法,比如离线判断一个方法,数据超限判断一个方法,数据保存一个方法。

4、其实还可以根据job的执行类型,来分别建立quartz后台工作者,

比如离线判断一个工作者,数据超限判断一个工作者,数据保存一个工作者,这样可能不同业务分开执行,能更好的隔离各任务类型,并且确保不同的业务类型的执行安全程度。


2023-5-13日临时思考记录:

每个任务类型的执行队列,那么多行,怎么判断是否执行完成了一轮是个问题,是否需要在队列表中加执行顺序。或者是否要考虑再加一个任务执行记录表,记录执行了哪些任务。
2023-6-1日记录:

因为前端时间被老项目任务拖累,一直到现在才有空重新回来做这个没做完的定时任务逻辑。重新回顾了一下5-13日的问题, 给job表增加 下次执行时间  字段可以解决问题,这样只用在每次遍历job表的时候任务的下次执行时间是否已经到达了,当前时间到达或超过下次执行时间都可以执行,每次执行完一行作业任务,就把下次执行时间加上执行间隔,更新为新的下次执行时间。  不过这样要考虑业务配置的执行间隔不能比quartz工作者本身的执行间隔还短,不然永远都追不上任务下一次的执行时间,会越拉越长,比如quartz工作者本身是20秒执行一次, 那所有的job任务执行间隔应该要超过20秒。文章来源地址https://www.toymoban.com/news/detail-440890.html


到了这里,关于abpvnext后台工作者使用quartz扩展的一些思路和使用细节记录--(未完待续)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 最近基于深度学习大火的AIGC将会抢工作者的饭碗?

    NLG | CLIP | Diffusion Model GAN | AIGC | Stable Diffusion 随着CLIP、DALL·E、Diffusion Model、Magic3D、Stable Diffusion等技术的快速发展,AIGC在全球各大科技巨头间可谓是高频词汇,连带着AI这个老生常谈的话题也一并火热起来。 去年三月,OpenAI发布了人工智能绘画产品DALL·E,后来升级到DA

    2024年02月11日
    浏览(43)
  • 什么样的编辑器好用?或者适合电脑工作者的编辑器?

    电脑工作者和程序员所使用的文本编辑器通常需要具备高效率、易用性以及对代码友好等特点,包括语法高亮、自动完成、多文件同时编辑、查找替换、版本控制集成等功能。以下是几个广受开发者欢迎且实用性较强的文本编辑器: Visual Studio Code (VS Code): 开源、免费,由

    2024年02月21日
    浏览(55)
  • 科研工作者们,ChatGPT (GPT-4) 玩起来了没,来这体验一下吧

    话不多说,直接上链接: https://sci.justscience.cn/chatgpt 再来个让我很惊讶的案例—— 设计研究方案 看看是不是可以作为一个小助理来给你点参考了? 如果想完全让ChatGPT来帮自己做完整方案还是放弃吧!毕竟有些回答依然是有错的,比如它回答,GPX4和SLC7A11并不是铁死亡的特异

    2023年04月27日
    浏览(83)
  • 优秀自媒体工作者常用的7款ai写作工具! #AI写作#AI写作

    我们做自媒体运营,想要快速的创作内容,提供文章的创作速度是我们的目标,我们别的大佬可以很快地就创作出一篇内容,而自己墨迹半天确出不了一个字呢?其实这关乎到创作技巧,下面小编就跟大家分享如何利用自媒体工具辅助自己创作的技巧。 1.红桃写作 这是一个微

    2024年04月23日
    浏览(51)
  • 技术工作者们都在哪里聚集?这篇推荐让你一次性get到

    大家好,我是 jonssonyan,一名程序员,今天我来给大家推荐几个程序员常去的技术论坛。作为程序员,我们的知识储备和学习能力是至关重要的,而技术论坛则是获取最新技术动态和经验分享的最佳途径之一。在这篇文章中,我会给大家介绍一些我个人常去的技术论坛,希望

    2023年04月09日
    浏览(37)
  • 用AI帮助你思考?两名大学生一夜开发出ChatMind,这次是知识工作者的福音!

     Datawhale发布  作者:石天放,Datawhale成员 ChatGPT建议的标题。还可以吧。 如何让知识工作者更便捷的通过对话就能梳理思维逻辑、找到解决方案,Datawhale成员天放,开发了能够与AI对话生成思维导图的工具ChatMind。这次是知识工作者的福音!国内就可以体验。 ChatMind能够在多

    2024年02月05日
    浏览(43)
  • Django高级扩展之系统后台使用celery

    如果我们在系统后台想某日某时执行某个任务,或者每隔一段时间执行某个任务,可以使用celery来完成。 目录 安装 安装celery 安装django_celery_beat celery配置 注册应用 celery配置 修改__init__.py 表迁移 执行迁移 控制台运行截图 新增数据表 安装django-celery-results 执行命令 注册应用

    2024年02月11日
    浏览(64)
  • 解决python扩展在连接远程服务器时无法使用: 此扩展在此工作区中被禁用,因为其被定义为在远程扩展主机中运行。请在 ‘SSH: xxxxx‘ 中安装扩展以进行启用

    问题如题,解决后的效果如下: 出问题时,在上图中会出现一行小字“此扩展在此工作区中被禁用,因为其被定义为在远程扩展主机中运行。请在 ‘SSH: xxxxx’ 中安装扩展以进行启用”。导致你ctrl点函数不会进行跳转,也就是Python扩展的功能完全没用实现,非常不方便。 具

    2024年02月07日
    浏览(295)
  • uniapp iOS 消息推送扩展:后台/杀死app进程状态能语音播报

    HBuilderX3.1.5+ 版本uni原生插件支持iOS Extension(扩展)。 消息推送离线语音播报插件获取方式: 公z号:iOS逆向: 离线包x10, 源码是x15。 实现原理: 获取GroupIdentifier,用于保存本地拼接音频。 将音频文件写到AppGroups的Library/Sounds文件夹下,最后更改UNNotificationSound属性即可使通

    2024年02月14日
    浏览(36)
  • ABPvNext-微服务框架基础入门

    本文使用的是ABPvNext商业版 最新稳定版本7.0.2为演示基础的,后续如果更新,会单独写一篇最新版本的,此文为零基础入门教程,后续相关代码会同步更新到gitee仓库中。 1.登录ABPvNext官网 网址 http://abp.io 2.跳转到商业版的说明文档,目前商业版没有中文,只能使用谷歌浏览器

    2023年04月14日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包