W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
與 Spring 和 Grails 一樣,Micronaut 具有用于調(diào)度后臺任務(wù)的 Scheduled 注解。
使用@Scheduled 注解
Scheduled 注釋可以添加到 bean 的任何方法,您應(yīng)該設(shè)置 fixedRate、fixedDelay 或 cron 成員之一。
請記住,bean 的范圍會影響行為。每次執(zhí)行計劃的方法時,@Singleton bean 共享狀態(tài)(實例的字段),而對于 @Prototype bean,每次執(zhí)行都會創(chuàng)建一個新實例。
以固定速率調(diào)度
要以固定速率安排任務(wù),請使用 fixedRate 成員。例如:
固定利率示例
Java | Groovy | Kotlin |
|
|
|
上面的任務(wù)每五分鐘執(zhí)行一次。
固定延遲調(diào)度
要安排任務(wù)使其在前一個任務(wù)終止后五分鐘運行,請使用 fixedDelay 成員。例如:
固定延遲示例
Java | Groovy | Kotlin |
|
|
|
安排 Cron 任務(wù)
要安排 Cron 任務(wù),請使用 cron 成員:
計劃實例
Java | Groovy | Kotlin |
|
|
|
上面的示例在服務(wù)器時區(qū)的每周一上午 10:15 運行任務(wù)。
僅具有初始延遲的調(diào)度
要安排任務(wù)使其在服務(wù)器啟動后運行一次,請使用 initialDelay 成員:
初始延遲示例
Java | Groovy | Kotlin |
|
|
|
上面的例子只運行一次,在服務(wù)器啟動后一分鐘。
以編程方式安排任務(wù)
要以編程方式安排任務(wù),請使用可以按如下方式注入的 TaskScheduler bean:
Java | Groovy | Kotlin |
|
|
|
使用注釋元數(shù)據(jù)配置計劃任務(wù)
要使您的應(yīng)用程序的任務(wù)可配置,您可以使用注釋元數(shù)據(jù)和屬性占位符配置。例如:
允許配置任務(wù)
Java | Groovy | Kotlin |
|
|
|
上面的示例允許使用屬性 my.task.rate 配置任務(wù)執(zhí)行頻率,并使用屬性 my.task.delay 配置初始延遲。
配置定時任務(wù)線程池
@Scheduled 執(zhí)行的任務(wù)默認(rèn)在 ScheduledExecutorService 上運行,該服務(wù)配置為具有兩倍于可用處理器的線程數(shù)。
您可以在您的配置文件(例如 application.yml)中配置此線程池:
配置定時任務(wù)線程池
Properties | Yaml | Toml | Groovy | Hocon | JSON |
|
|
|
|
|
|
屬性 | 類型 | 描述 |
---|---|---|
|
java.lang.Integer |
|
|
||
|
java.lang.Integer |
|
|
java.lang.Integer |
|
|
java.lang.Class |
|
|
java.lang.String |
設(shè)置執(zhí)行者名稱。 |
|
java.lang.Integer |
設(shè)置 FIXED 的線程數(shù)。默認(rèn)值(2 * Java 虛擬機(jī)可用的處理器數(shù))。 |
處理異常
默認(rèn)情況下,Micronaut 包含一個 DefaultTaskExceptionHandler bean,它實現(xiàn)了 TaskExceptionHandler 接口,如果調(diào)用計劃任務(wù)時發(fā)生錯誤,則只記錄異常。
如果您有自定義要求,您可以用您自己的實現(xiàn)替換此 bean(例如發(fā)送電子郵件或關(guān)閉上下文以快速失敗)。為此,請編寫您自己的 TaskExceptionHandler 并使用 @Replaces(DefaultTaskExceptionHandler.class) 對其進(jìn)行注釋。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: