Как планировать задачи в приложении микросервис Ktor - PullRequest
2 голосов
/ 05 ноября 2019

Я пытаюсь запланировать задачу в своем приложении Ktor, однако я не смог найти в Интернете ничего о том, как это сделать. Кто-нибудь есть какие-либо рекомендации или был в состоянии сделать это раньше?

1 Ответ

0 голосов
/ 05 ноября 2019

Ktor не имеет встроенного планировщика, поэтому вам придется реализовать свой собственный

Я написал небольшой класс, используя для этого для себя исполнителя Executors Java, вы можете найти его полезным

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)
...