<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                如果沒有將任務進行持久化,當遇到程序版本更新、或機器宕機重啟后,那些沒有開始、或還沒有執行完的任務就沒了。所以我們需要把任務持久化到數據庫中。 ```xml <!-- 我用的 maven 坐標 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.0.32</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.5</version> </dependency> ``` 步驟如下: **1. 確定自己使用的數據庫并建表,我這里用 MySQL** ![](https://img.kancloud.cn/37/ad/37ade834ed6abcd5a753ae59388eab96_1996x432.png) 建表的腳本在`org/quartz/impl/jdbcjobstore/`目錄下,我這里用`tables_mysql_innodb.sql`腳本。 ``` # 這個是數據庫平臺,下面將會用到 # org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate ``` ![](https://img.kancloud.cn/e9/c9/e9c9a1ee8e13b8474edfc3bc10c098b8_1827x299.png) <br/> **2. quartz 相關配置`applicaton.yml`** ```yml spring: quartz: properties: org: quartz: scheduler: #調度器名稱,隨便一個字符串就行 instanceName: quartz02Cluster #調度器ID。AUTO就是quartz自動生成 instanceId: AUTO threadPool: #線程池類,使用quartz自帶的SimpleThreadPool也幾乎滿足所有用戶的需求了 class: org.quartz.simpl.SimpleThreadPool threadCount: 10 threadPriority: 5 jobStore: #將任務存儲到數據庫中,默認是org.quartz.simpl.RAMJobStore,存儲在內存中 class: org.quartz.impl.jdbcjobstore.JobStoreTX #數據庫平臺,MySQL對應的就是StdJDBCDelegate driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate useProperties: false #是否在集群環境下使用,true是、false不是 isClustered: true #quartz相關表的表名前綴,方便quartz定位到相關的表。可自定義,我這里保持和官方一樣的就好 tablePrefix: qrtz_ #數據源別名,可自定義 dataSource: mysql dataSource: #mysql,就是上面的jobStore.dataSource: mysql 設置的別名 mysql: driver: com.mysql.cj.jdbc.Driver URL: jdbc:mysql://127.0.0.1:3306/quartzdb?useUnicode=true&characterEncoding=utf-8&useSSL=false user: root password: uhg</flEt3dff #持久化到數據庫 job-store-type: jdbc jdbc: #在項目啟動時是否自動建quartz相關表,建議用never,不自動建表。 initialize-schema: never ``` **** 其它配置參考:https://www.w3cschool.cn/quartz_doc/quartz_doc-i7oc2d9l.html <br/> **3. 定時任務要執行的業務代碼** ```java @Slf4j public class GoogsJob extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { JobDataMap dataMap = context.getJobDetail().getJobDataMap(); log.info("name:{}", dataMap.get("name")); } } ``` <br/> **4. 創建定時任務** ```java @RestController public class GoogsJobController { @Autowired private Scheduler scheduler; @GetMapping("/goodsJob1") public void goodsJob1() throws SchedulerException { JobDetail jobDetail = JobBuilder .newJob(GoogsJob.class) .usingJobData("name", "勞斯勞斯") .withIdentity("goods-job1", "job-group1") .build(); Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("goods-trigger1", "trigger-group1") .startNow() .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(4) .repeatForever() ) .build(); scheduler.scheduleJob(jobDetail, trigger); scheduler.start(); } } ``` <br/> **5. 測試:創建任務后,日志輸出如下** ``` 2023-04-06T22:17:45 ...job.GoogsJob : name:勞斯勞斯 2023-04-06T22:17:49 ...job.GoogsJob : name:勞斯勞斯 2023-04-06T22:17:53 ...job.GoogsJob : name:勞斯勞斯 ``` <br/> **6. 測試:先關掉 SpringBoot 項目,然后再重啟,任務就會自動恢復執行了** ``` 2023-04-06T22:21:17 ...job.GoogsJob : name:勞斯勞斯 2023-04-06T22:21:21 ...job.GoogsJob : name:勞斯勞斯 2023-04-06T22:21:25 ...job.GoogsJob : name:勞斯勞斯 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看