본문 바로가기
Spring

SpringBoot daemon application 만들기

by 아이티.파머 2021. 4. 29.
반응형

SpringBoot daemon application 만들기

Spring 을 사용하면서 데몬형태로 운영하기 위해서는 web module을 제거해주고 Start 해준다.

혹은 제거 하지 않고도 프로퍼티에서 설정을 변경 하여 데몬 형태로 만들 수 있다.

web-application-type 타입을 none로 변경하여 데몬 형태로 만든다. (내장 웹서버를 사용하지 않음)

spring:
  devtools:
    restart:
      enabled: false
  main:
    **web-application-type: none**

어째뜬 web-application-type 을 변경 하거나, web 모듈을 제거 하고, 계속 데몬이 유지되게 하려면 Thread 를 하나 생성해서 프로세스를 살려둔다. (혹은 rabbitMQ, kafka 와같은 backgrould thread 를 설정 한다.)

CommandLineRunner 를 상속받아 스프링부트 서비스 실행시 Background Thread를 실행 시켜 프로세스를 유지 한다.

@Component
@Slf4j
public class DaemonRunner implements CommandLineRunner {

  @Override
  public void run(String... args) throws Exception {

    Thread daemonThread = new Thread(() -> {
      while (true) {
        try {
          log.trace("Daemon thread ..... live");
          TimeUnit.MILLISECONDS.sleep(500);
        } catch (InterruptedException e) {
          log.error("Daemon Thread Error = {} ", e.getMessage());
          break;
        }
      }
    });

    // spring boot 의존성에서 web 제거후
    // Thread 를 시작하여 daemon 으로 사용.
    daemonThread.start();

  }
}
반응형