不同型別Trigger的選擇

2021-06-27 18:56:34 字數 1074 閱讀 8575

1.******trigger 一般用於實現每隔一定時間執行任務,以及重複多少次,如每 60 秒執行一次,重複執行 6 次。

問題: (1) 在使用過程中發現設定執行6次其實是執行7次, 有一次是在開始執行的第 0 秒執行了一次, 然後根據執行間隔再執行給定的執行次數。

(2) 當有 misfired 的任務並且恢復執行時,該執行時間是隨機的(取決於何時執行 misfired 的任務,例如某天的 6:00pm)。這會導致之後每天的執行時間都會變成 6:00pm,而不是我們原來期望的時間。(ps: 因為這個問題, 我考慮不對外提供******trigger, 而換用dailytimeintervaltrigger)

2. crontirgger 使用類似於 linux/unix 上的任務排程命令 crontab,具體參見quartz入門詳解的cron表示式。對於涉及到星期和月份的排程,crontirgger 是最適合的,甚至某些情況下是唯一選擇。例如,"00 06 06 ? * wed 2014" 表示2023年每月每個星期三的 06:06am 執行任務。

3. dailytimeintervaltrigger 會在給定的時間區間內每隔 n(1, 2, 3...)秒或小時執行任務。例如:設定從周一到周五10:10 ~ 18:00每60分鐘執行一次。雖然 ******trigger 也能實現類似的任務,但是dailytimeintervaltrigger 不會受到上面提到的 misfired 任務的問題。

4.calendarintervaltrigger 一般用於處理基於日曆時間重複間隔任務。可以處理******trigger不能處理的任務(如:每個月的間隔秒數不同)和crontrigger不能處理的任務(如:每5個月不是12的除數)。

除了上面提到的 4 種 trigger,quartz 中還定義了乙個 calendar 類(org.quartz.calendar)。 calendar 類與 trigger 一起使用,它是用於排除任務不被執行的情況。例如,按照 trigger 的規則在 5 月 1 號需要執行任務,但是 holidaycalendar 指定了 5 月 1 號是法定假節日,所以任務在這一天將不會被執行。當然calendar類不僅僅提供了節假日的排除, 還有cron表示式排除等子類實現。

不同型別語言

編譯型和解釋型的區別 先來看看編譯型語言定義 編譯型語言首先是將源 編譯生成機器指令,再由機器執行機器碼 二進位制 再來看看解釋型語言的定義 解釋型語言的源 不是直接翻譯成機器指令,而是先翻譯成中間 再由直譯器對中間 進行解釋執行。咋看一眼,還是一臉懵逼。下面打個比方 動態語言和靜態語言 我們常說的...

不同型別的檔案

cpp檔案 cpp是用c 語言編寫的源 檔案的字尾 具體實現 h檔案 h是c語言和c 語言的標頭檔案 函式宣告,巨集定義,函式原型 pde檔案 一共有4種可能,分別為 1 powerdesk encrypted file 2 pathology data exchange file 3 afp pa...

C 不同型別的畫筆!

畫筆是可以與graphics物件一起用來建立實心形狀和呈現文字的物件。1.solidbrush 畫筆最簡單形式,用純色進行繪製。2.hatchbrush 類似與 1 但它可以選擇大量預設圖案,而不是純色。要命名空間 using system.drawing.drawing2d 3.texturebr...