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

标签 kotlin scheduling ktor

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

最佳答案

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)

关于kotlin - 如何在 Ktor 微服务应用中安排任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58717774/

相关文章:

c++ - 提高 Windows Sleep() 的准确性

Kubernetes - 触发 Pod 的重新平衡

kotlin - ktor sslConnector 从 jar p12 pkcs12 jks keystore 和 mtls 相互 ssl 连接中服务/读取

android - 不推荐使用配置 'compile',但所有配置都是 'implementation'

android - 使用 Kotlin 进行数据绑定(bind)会导致 Resources$NotFoundException

Linux内核调度器CFS

kotlin - IntelliJ在新的Ktor项目中缺少对slf4j的引用

Ktor:使用 Spek/KotlinTest 代替 JUnit 测试类来测试 REST 端点

java - 将字符串转换为 ParseObject

android - 如何解决在直接将图像从 android 库共享到我的 flutter 应用程序时收到的奇怪和不完整的 Uri 和路径