Schedulare task in Micronaut e Kotlin
In questo articolo vediamo come schedulare dei task in Micronaut e Kotlin.
Non dovrebbe esserci il bisogno di installare nuove dipendenze.
Comunque qui sotto vi metto quelle che io da creazione di progetto:
dependencies {
ksp("io.micronaut:micronaut-http-validation")
ksp("io.micronaut.serde:micronaut-serde-processor")
implementation("io.micronaut.kotlin:micronaut-kotlin-runtime")
implementation("io.micronaut.serde:micronaut-serde-jackson")
implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")
compileOnly("io.micronaut:micronaut-http-client")
runtimeOnly("ch.qos.logback:logback-classic")
runtimeOnly("com.fasterxml.jackson.module:jackson-module-kotlin")
testImplementation("io.micronaut:micronaut-http-client")
}
Poi creiamo una classe tipo questa:
package com.test
import io.micronaut.scheduling.annotation.Scheduled
import jakarta.inject.Singleton
import java.text.SimpleDateFormat
import java.util.Date
@Singleton
class MyJob {
@Scheduled(fixedDelay = "10s")
fun task1() {
println("Task 1: " + SimpleDateFormat("dd/M/yyyy hh:mm:ss").format(Date()))
}
@Scheduled(fixedDelay = "30s", initialDelay = "5s")
fun task2() {
println("Task 2: " + SimpleDateFormat("dd/M/yyyy hh:mm:ss").format(Date()))
}
@Scheduled(cron = "0 45 09 1/1 * ?")
fun task3() {
println("Task 3: " + SimpleDateFormat("dd/M/yyyy hh:mm:ss").format(Date()))
}
}
Qui abbiamo tre task:
- parte ogni 10 secondi appena l'applicazione viene attivata
- parte ogni 30 secondi con un ritardo di 5
- parte una volta al giorno ad un orario prestabilito (in questo caso 09:45); qui usiamo lo stile di CRON
Non dovete fare altro; infatto questo è il mio main:
package com.test
import io.micronaut.runtime.Micronaut.run
fun main(args: Array<String>) {
run(*args)
}
Enjoy!
kotlin micronaut scheduled
Commentami!