日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql的每隔1分钟定时_简单易用,spring boot集成quartz,实现分布式定时任务

發(fā)布時(shí)間:2024/9/27 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql的每隔1分钟定时_简单易用,spring boot集成quartz,实现分布式定时任务 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

什么是quartz?

Quartz是一個(gè)完全由 Java 編寫的開源任務(wù)調(diào)度框架。

我們經(jīng)常會(huì)遇到一些問題:

想每個(gè)月27號,提醒信用卡還款;

想每隔1小時(shí),提醒一下,累了,站起來活動(dòng)一下;

想每個(gè)月定時(shí)發(fā)送郵件,等等。

總結(jié)起來就是,在一個(gè)有規(guī)律的時(shí)間點(diǎn)做某件事。

quartz可滿足復(fù)雜觸發(fā)條件下的定時(shí)任務(wù)調(diào)度,比如每月的周一和周五 10點(diǎn) 15分執(zhí)行。

quartz集群可保證系統(tǒng)的高可用性,即使一個(gè)節(jié)點(diǎn)崩了,也能保證任務(wù)的執(zhí)行。

集群環(huán)境下,一個(gè)任務(wù)某個(gè)時(shí)間點(diǎn)只會(huì)在一個(gè)節(jié)點(diǎn)上運(yùn)行。

核心概念

  • Job 表示一個(gè)工作,要執(zhí)行的具體內(nèi)容
  • JobDetail 表示任務(wù)的定義,Job 是任務(wù)的執(zhí)行邏輯
  • Trigger 代表一個(gè)調(diào)度參數(shù)的配置,什么時(shí)候去調(diào)
  • Scheduler 代表一個(gè)調(diào)度容器,一個(gè)調(diào)度容器中可以注冊多個(gè) JobDetail 和 Trigger。當(dāng) Trigger 與 JobDetail 組合,就可以被 Scheduler 容器調(diào)度了。
  • quartz集群應(yīng)用

    集群中的節(jié)點(diǎn)放在不同的服務(wù)器上,稱為水平集群。

    節(jié)點(diǎn)放在同一臺機(jī)器上,稱為垂直集群,存在著單點(diǎn)故障問題。

    Quartz可以借助關(guān)系數(shù)據(jù)庫和JDBC作業(yè)存儲支持集群。

    數(shù)據(jù)庫腳本

    鏈接:https://pan.baidu.com/s/1BpDTVRwtN6_VVJqTx9flNQ

    提取碼:49ie

    搭建spring boot環(huán)境

    以定時(shí)發(fā)送郵件為例,每隔1分鐘發(fā)送一次,郵件發(fā)送功能忽略,不是本例重點(diǎn)。

    開發(fā)工具:Intellij IDEA

    添加maven 依賴

    配置

    • 配置application.yml
    server: port: ${PORT:8090}spring: application: name: learn-quartz datasource: druid: url: ${MYSQL_URL:jdbc:mysql://192.168.0.113:3306/quartz?characterEncoding=utf-8&useSSL=false} username: root password: 123456 driverClassName: com.mysql.cj.jdbc.Driver initialSize: 5 #初始建立連接數(shù)量 minIdle: 5 #最小連接數(shù)量 maxActive: 20 #最大連接數(shù)量 maxWait: 10000 #獲取連接最大等待時(shí)間,毫秒 testOnBorrow: true #申請連接時(shí)檢測連接是否有效 testOnReturn: false #歸還連接時(shí)檢測連接是否有效 timeBetweenEvictionRunsMillis: 60000 #配置間隔檢測連接是否有效的時(shí)間(單位是毫秒) minEvictableIdleTimeMillis: 300000 #連接在連接池的最小生存時(shí)間(毫秒) quartz: job-store-type: jdbc #數(shù)據(jù)庫方式 jdbc: initialize-schema: never #不初始化表結(jié)構(gòu) properties: org: quartz: scheduler: instanceId: AUTO #默認(rèn)主機(jī)名和時(shí)間戳生成實(shí)例ID,可以是任何字符串,但對于所有調(diào)度程序來說,必須是唯一的 對應(yīng)qrtz_scheduler_state INSTANCE_NAME字段 instanceName: clusteredScheduler #quartzScheduler jobStore: class: org.quartz.impl.jdbcjobstore.JobStoreTX #持久化配置 driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate #我們僅為數(shù)據(jù)庫制作了特定于數(shù)據(jù)庫的代理 useProperties: false #以指示JDBCJobStore將JobDataMaps中的所有值都作為字符串,因此可以作為名稱 - 值對存儲而不是在BLOB列中以其序列化形式存儲更多復(fù)雜的對象。從長遠(yuǎn)來看,這是更安全的,因?yàn)槟苊饬藢⒎荢tring類序列化為BLOB的類版本問題。 tablePrefix: QRTZ_ #數(shù)據(jù)庫表前綴 misfireThreshold: 60000 #在被認(rèn)為“失火”之前,調(diào)度程序?qū)ⅰ叭萑獭币粋€(gè)Triggers將其下一個(gè)啟動(dòng)時(shí)間通過的毫秒數(shù)。默認(rèn)值(如果您在配置中未輸入此屬性)為60000(60秒)。 clusterCheckinInterval: 5000 #設(shè)置此實(shí)例“檢入”*與群集的其他實(shí)例的頻率(以毫秒為單位)。影響檢測失敗實(shí)例的速度。 isClustered: true #打開群集功能 threadPool: #連接池 class: org.quartz.simpl.SimpleThreadPool threadCount: 10 threadPriority: 5 threadsInheritContextClassLoaderOfInitializingThread: true
    • 定義Job
    public class EmailJob extends QuartzJobBean { @Value("${server.port}") String port; @Override protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { String time = DateUtil.now(); System.out.println(time + " send email,server port:" + port); }}
    • 配置QuartzConfig.java
    @Configurationpublic class QuartzConfig { @Bean public JobDetail jobSendEmailDetails() { return JobBuilder.newJob(EmailJob.class).withIdentity("emailJobId") .storeDurably().build(); } /** * 1分鐘1次,會(huì)平均分配到每個(gè)節(jié)點(diǎn)上 * @return */ @Bean public Trigger jobOrderCheckTrigger() { return TriggerBuilder.newTrigger().forJob(jobSendEmailDetails()) .withIdentity("sendEmailTriggerId") .withSchedule(CronScheduleBuilder.cronSchedule("0 0/1 * * * ?")) .build(); }}

    創(chuàng)建2個(gè)應(yīng)用

    選擇Edit Configurations, 在spring boot目錄下創(chuàng)建quartz1和quartz2, VM options中分別輸入-DPORT=8090和-DPORT=8091, 啟動(dòng)兩個(gè)實(shí)例,同一個(gè)任務(wù)會(huì)在兩個(gè)實(shí)例中輪流執(zhí)行,效果圖:

    quartz1

    quartz2

    總結(jié)

    以上是生活随笔為你收集整理的mysql的每隔1分钟定时_简单易用,spring boot集成quartz,实现分布式定时任务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美亚韩一区二区三区 | 极品美女无套呻吟啪啪 | 日日骑夜夜操 | 青青草原av在线 | 亚洲欧洲综合网 | 福利一区在线 | 香蕉视频一级 | 欧美日韩亚洲在线 | 超碰77 | 18禁裸男晨勃露j毛免费观看 | 日韩精选 | 婷婷五月在线视频 | 特黄三级又爽又粗又大 | 法国经典free性复古xxxx | 91成人天堂久久成人 | 极品尤物一区二区三区 | tube极品少妇videos | 国产欧美日韩一区二区三区 | 亚洲乱人伦 | 日本大乳奶做爰 | 亚洲av综合色区无码二区爱av | 少妇一级淫免费播放 | 泽村玲子在线 | 青草操| 999www| 天天做天天爱 | 国产精成人品免费观看 | 日韩免费不卡视频 | 日韩精品一区二区三区高清免费 | 波多野在线 | 亚洲视频自拍 | sm调教羞耻姿势图片 | 中文字幕亚洲色图 | 国产精品第6页 | 日韩精品人妻一区 | 五月丁香综合激情六月久久 | 丰满少妇理论片 | 成年网站免费观看 | 51成人做爰www免费看网站 | 国产剧情av在线 | 成人18在线| 欧美三级精品 | 老司机成人免费视频 | 青青青视频在线播放 | 亚洲性猛交富婆 | 一区二区三区精品在线观看 | 亚洲色图28p | 成人人人人人欧美片做爰 | 亚洲中文字幕视频一区 | 男人午夜免费视频 | 欧美日韩不卡合集视频 | 99久久精品久久久久久清纯 | 日本xxxxxxxxx18 | 欧美性第一页 | 精品夜夜澡人妻无码av | 国产一二三区精品 | 黄瓜视频色 | 特黄av| 亚洲第8页| 色欲无码人妻久久精品 | 青青青草视频在线 | 成人黄色片在线观看 | 1000部做爰免费视频 | 狠狠撸在线 | av亚州| 久久大香| 99精品人妻国产毛片 | 亚洲综合激情在线 | 久久激情小说 | 少妇无内裤下蹲露大唇视频 | 国产suv一区二区 | 欧美九九九 | 欧美日韩亚洲免费 | 黄色va | 亚洲50p| 午夜一区二区三区在线观看 | 国产精品无码乱伦 | 偷偷色噜狠狠狠狠的777米奇 | 精品亚洲aⅴ无码一区二区三区 | 欧美片17c07.com | 日韩成人av网址 | 麻豆影视在线播放 | 欧美精品二区三区四区免费看视频 | 中文字幕精品一区二区三区精品 | 中文字幕在线不卡 | 69日影院 | 致单身男女免费观看完整版 | 午夜国产一区二区 | 亚洲欧洲一区二区 | 91看片就是不一样 | 亚洲精品在线免费看 | 中文字字幕一区二区三区四区五区 | 黑人与日本少妇 | 草草草在线 | 日韩欧美理论片 | 波多野结衣一本 | 大陆一级片 | 免费无码一区二区三区 | 亚洲五级片 |