콘텐츠 예약 오픈 설정
- 스케줄러 설정 수정 - 외부에서 실행되는 endpoint 제거
This commit is contained in:
		| @@ -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() | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user