parent
c1748001d5
commit
a1ef9a4970
|
@ -8,11 +8,23 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
|
|||
@Configuration
|
||||
@EnableScheduling
|
||||
class SchedulerConfig {
|
||||
@Bean
|
||||
@Bean(name = ["taskScheduler"])
|
||||
fun taskScheduler(): ThreadPoolTaskScheduler {
|
||||
val scheduler = ThreadPoolTaskScheduler()
|
||||
scheduler.poolSize = 5
|
||||
scheduler.setThreadNamePrefix("DefaultScheduler-")
|
||||
scheduler.setWaitForTasksToCompleteOnShutdown(true) // 종료 시 대기 설정
|
||||
scheduler.setAwaitTerminationSeconds(10) // 최대 10초 대기
|
||||
return scheduler
|
||||
}
|
||||
|
||||
@Bean(name = ["audioContentReleaseScheduler"])
|
||||
fun audioContentReleaseScheduler(): ThreadPoolTaskScheduler {
|
||||
val scheduler = ThreadPoolTaskScheduler()
|
||||
scheduler.poolSize = 2
|
||||
scheduler.setThreadNamePrefix("AudioContentRelease-Scheduler-")
|
||||
scheduler.setWaitForTasksToCompleteOnShutdown(true) // 종료 시 대기 설정
|
||||
scheduler.setAwaitTerminationSeconds(10) // 최대 10초 대기
|
||||
return scheduler
|
||||
}
|
||||
}
|
||||
|
|
|
@ -193,12 +193,6 @@ class AudioContentController(private val service: AudioContentService) {
|
|||
)
|
||||
}
|
||||
|
||||
@PostMapping("/release")
|
||||
@PreAuthorize("hasRole('BOT')")
|
||||
fun releaseContent() = run {
|
||||
ApiResponse.ok(service.releaseContent())
|
||||
}
|
||||
|
||||
@PostMapping("/pin-to-the-top/{id}")
|
||||
@PreAuthorize("hasRole('CREATOR')")
|
||||
fun pinToTheTop(
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
package kr.co.vividnext.sodalive.scheduler
|
||||
|
||||
import kr.co.vividnext.sodalive.content.AudioContentService
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
|
||||
import org.springframework.scheduling.support.CronTrigger
|
||||
import org.springframework.stereotype.Component
|
||||
import java.util.concurrent.ScheduledFuture
|
||||
import javax.annotation.PostConstruct
|
||||
import javax.annotation.PreDestroy
|
||||
|
||||
@Component
|
||||
class AudioContentReleaseScheduledTask(
|
||||
private val audioContentService: AudioContentService,
|
||||
private val audioContentReleaseScheduler: ThreadPoolTaskScheduler
|
||||
) {
|
||||
private var scheduledTask: ScheduledFuture<*>? = null
|
||||
|
||||
@PostConstruct
|
||||
fun release() {
|
||||
scheduledTask = audioContentReleaseScheduler.schedule(
|
||||
{ audioContentService.releaseContent() },
|
||||
CronTrigger("0 0/15 * * * *")
|
||||
)
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
fun stopReleaseScheduler() {
|
||||
scheduledTask?.cancel(false)
|
||||
audioContentReleaseScheduler.shutdown()
|
||||
}
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
package kr.co.vividnext.sodalive.scheduler
|
||||
|
||||
import kr.co.vividnext.sodalive.content.AudioContentService
|
||||
import org.springframework.scheduling.annotation.Scheduled
|
||||
import org.springframework.stereotype.Service
|
||||
|
||||
@Service
|
||||
class AudioContentReleaseSchedulerService(
|
||||
private val audioContentService: AudioContentService
|
||||
) {
|
||||
@Scheduled(cron = "0 0/15 * * * *")
|
||||
fun release() {
|
||||
audioContentService.releaseContent()
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue