콘텐츠 예약 오픈 설정

- 스케줄러 설정 수정
- 외부에서 실행되는 endpoint 제거
This commit is contained in:
Klaus 2024-12-02 10:46:48 +09:00
parent c1748001d5
commit a1ef9a4970
4 changed files with 44 additions and 22 deletions

View File

@ -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
}
}

View File

@ -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(

View File

@ -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()
}
}

View File

@ -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()
}
}