Schedulare task in Micronaut e Kotlin

Mattepuffo's logo
Schedulare task in Micronaut e Kotlin

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:

  1. parte ogni 10 secondi appena l'applicazione viene attivata
  2. parte ogni 30 secondi con un ritardo di 5
  3. 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!


Condividi

Commentami!