【问题标题】:How to schedule tasks in Ktor microservice app如何在 Ktor 微服务应用程序中安排任务
【发布时间】:2020-03-02 04:57:35
【问题描述】:

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

【问题讨论】:

    标签: kotlin scheduling ktor


    【解决方案1】:

    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)
    

    【讨论】:

    • 太棒了。目前,当进行 api 调用时,我正在启动 Runnable。有没有办法让 runnable 一直运行?
    • 您能否详细说明“始终可运行”的含义?你的意思是一旦你创建了Scheduler?您可以在其中创建init {} 块和scheduleExecution
    • Evgeny,请提供如何从运行线程调用它
    猜你喜欢
    • 2011-01-30
    • 2015-07-27
    • 2012-01-23
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2011-06-24
    • 2021-02-24
    • 1970-01-01
    相关资源
    最近更新 更多