<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                >[info]misfire 概念提出的理由:到了任務觸發時間點,但是任務沒有被觸發。 可能的原因如下: * 線程池滿了,沒有資源執行任務。 * 機器宕機。 * 代碼的 BUG 導致的異常終止。 為了讓任務在錯過之后,還能正常的運行,Quartz 針對不同的觸發器提供了各種的 misfire 策略。 [TOC] # 1. SimpleTrigger觸發器的misfire策略 **1. withMisfireHandlingInstructionFireNow()** >[info]所有被錯過的任務都會被重新執行。 ```java TriggerBuilder.newTrigger() //21:38 .startAt(startCl.getTime()) //21:40 .endAt(endCl.getTime()) .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withMisfireHandlingInstructionFireNow() .withIntervalInSeconds(2) .repeatForever() ) //應該在 21:38 開始,但我在 21:39 才啟動項目 //會將 21:39 之前被錯過的所有任務執行完,然后再按照觸發器的規則執行 ``` * 在`(21:38, 21:40)`區間內啟動項目,所有之前被錯過的任務都會重新被執行。 * 在`21:40`之后再啟動項目,之前被錯過的所有任務都不會再被執行了。 ``` /***** 打印日志如下 *****/ //先將錯過的任務執行完成 21:39:07 ...job.GoogsJob : 任務ID: job-group1.goods-job3 21:39:07 ...job.GoogsJob : 任務ID: job-group1.goods-job3 21:39:07 ...job.GoogsJob : 任務ID: job-group1.goods-job3 //再按照觸發器的規則正常執行 21:39:09 ...job.GoogsJob : 任務ID: job-group1.goods-job3 21:39:11 ...job.GoogsJob : 任務ID: job-group1.goods-job3 21:39:13 ...job.GoogsJob : 任務ID: job-group1.goods-job3 ``` 下面這些策略雖然與 withMisfireHandlingInstructionFireNow() 有一些差別,但我懶得計較,它們的規則都是一樣的。 ``` withMisfireHandlingInstructionNextWithExistingCount() withMisfireHandlingInstructionNextWithRemainingCount() withMisfireHandlingInstructionNowWithExistingCount() withMisfireHandlingInstructionNowWithRemainingCount() ``` <br/> **2. withMisfireHandlingInstructionIgnoreMisfires()** >[info]所有被錯過的任務都會被重新執行。 ```java TriggerBuilder.newTrigger() //21:00 .startAt(startCl.getTime()) //21:03 .endAt(endCl.getTime()) .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withMisfireHandlingInstructionIgnoreMisfires() .withIntervalInSeconds(2) .repeatForever() ) //應該在 21:00 開始,但我在 21:01 才啟動項目 //會將 21:01 之前被錯過的所有任務執行完,然后再按照觸發器的規則執行 ``` ``` /***** 打印日志如下 *****/ //先將錯過的任務執行完成 21:01:12 ...job.GoogsJob : 任務ID: job-group1.goods-job3 21:01:12 ...job.GoogsJob : 任務ID: job-group1.goods-job3 21:01:12 ...job.GoogsJob : 任務ID: job-group1.goods-job3 //再按照觸發器的規則正常執行 21:01:14 ...job.GoogsJob : 任務ID: job-group1.goods-job3 21:01:16 ...job.GoogsJob : 任務ID: job-group1.goods-job3 21:01:18 ...job.GoogsJob : 任務ID: job-group1.goods-job3 /上面的觸發器雖然定在 21:03 結束,但 21:03 之后再啟動項目, //之前被錯過的所有任務也會被執行的 ``` <br/> # 2. CronTrigger觸發器的misfire策略 **1. withMisfireHandlingInstructionIgnoreMisfires()** >[info]所有被錯過的任務都會被重新執行。 ```java CronScheduleBuilder.cronSchedule("0/2 * * * * ?") .withMisfireHandlingInstructionIgnoreMisfires() ``` <br/> **2. withMisfireHandlingInstructionDoNothing()** >[info]所有被錯過的任務都會被丟棄。 ```java CronScheduleBuilder.cronSchedule("0/2 * * * * ?") .withMisfireHandlingInstructionDoNothing() ``` <br/> **3. withMisfireHandlingInstructionFireAndProceed()** >[info]將部分被錯過的任務合并在一起執行一次,然后再正常執行下一周期的任務。 >【默認的 misfire 策略】 ```java CronScheduleBuilder.cronSchedule("0/2 * * * * ?") .withMisfireHandlingInstructionFireAndProceed() ``` ``` //下面這些是被錯過的任務 //注意看下面的日志打印時間,它們都是在 22 的時候打印的 //而觸發器規定的是每 2s 打印一次 2023-04-12T20:28:22 ...job.GoogsJob : 任務ID: job-group1.goods-job4 2023-04-12T20:28:22 ...job.GoogsJob : 任務ID: job-group1.goods-job4 2023-04-12T20:28:22 ...job.GoogsJob : 任務ID: job-group1.goods-job4 2023-04-12T20:28:22 ...job.GoogsJob : 任務ID: job-group1.goods-job4 2023-04-12T20:28:22 ...job.GoogsJob : 任務ID: job-group1.goods-job4 2023-04-12T20:28:22 ...job.GoogsJob : 任務ID: job-group1.goods-job4 2023-04-12T20:28:22 ...job.GoogsJob : 任務ID: job-group1.goods-job4 2023-04-12T20:28:22 ...job.GoogsJob : 任務ID: job-group1.goods-job4 //當將部分的被錯過的任務執行后,就會正常執行下一周期的任務了,即每 2s 執行一次 2023-04-12T20:28:24 ...job.GoogsJob : 任務ID: job-group1.goods-job4 2023-04-12T20:28:26 ...job.GoogsJob : 任務ID: job-group1.goods-job4 2023-04-12T20:28:28 ...job.GoogsJob : 任務ID: job-group1.goods-job4 2023-04-12T20:28:30 ...job.GoogsJob : 任務ID: job-group1.goods-job4 ```
                  <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>

                              哎呀哎呀视频在线观看