如何在 Ktor 微服务应用中安排任务

Ane*_* P. 8 scheduling kotlin ktor

我正在尝试在我的 Ktor 应用程序中安排一项任务,但是我无法在网上找到有关如何执行此操作的任何信息。有没有人有任何建议或以前能够做到这一点?

Evg*_*kin 5

Ktor 没有内置调度程序,因此您必须实现自己的调度程序

我已经使用 Java 的 Executors 为自己编写了一个小类来完成这个任务,你可能会发现它很有用

class Scheduler(private val task: Runnable) {
    private val executor = Executors.newScheduledThreadPool(1)!!

    fun scheduleExecution(every: Every) {

        val taskWrapper = Runnable {
            task.run()
        }

        executor.scheduleWithFixedDelay(taskWrapper, every.n, every.n, every.unit)
    }


    fun stop() {
        executor.shutdown()

        try {
            executor.awaitTermination(1, TimeUnit.HOURS)
        } catch (e: InterruptedException) {
        }

    }
}

data class Every(val n: Long, val unit: TimeUnit)
Run Code Online (Sandbox Code Playgroud)

  • Evgeny,请提供如何从运行线程调用它 (2认同)