콘텐츠 예약 오픈 설정
- 스케줄러 설정 수정 - 외부에서 실행되는 endpoint 제거
This commit is contained in:
		| @@ -8,11 +8,23 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler | |||||||
| @Configuration | @Configuration | ||||||
| @EnableScheduling | @EnableScheduling | ||||||
| class SchedulerConfig { | class SchedulerConfig { | ||||||
|     @Bean |     @Bean(name = ["taskScheduler"]) | ||||||
|     fun taskScheduler(): ThreadPoolTaskScheduler { |     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() |         val scheduler = ThreadPoolTaskScheduler() | ||||||
|         scheduler.poolSize = 2 |         scheduler.poolSize = 2 | ||||||
|         scheduler.setThreadNamePrefix("AudioContentRelease-Scheduler-") |         scheduler.setThreadNamePrefix("AudioContentRelease-Scheduler-") | ||||||
|  |         scheduler.setWaitForTasksToCompleteOnShutdown(true) // 종료 시 대기 설정 | ||||||
|  |         scheduler.setAwaitTerminationSeconds(10) // 최대 10초 대기 | ||||||
|         return scheduler |         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}") |     @PostMapping("/pin-to-the-top/{id}") | ||||||
|     @PreAuthorize("hasRole('CREATOR')") |     @PreAuthorize("hasRole('CREATOR')") | ||||||
|     fun pinToTheTop( |     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