[java] Akka와 스케줄링 작업 처리

Akka는 자바와 스칼라를 위한 고성능 액터 기반 런타임 시스템입니다. 이를 사용하여 스케줄링 작업을 처리하는 방법을 알아보겠습니다.

1. 스케줄링 작업 예약하기

Akka에서는 akka.actor.ActorSystem 클래스를 사용하여 스케줄링 작업을 예약할 수 있습니다. 다음은 예제 코드입니다.

import akka.actor.ActorSystem;
import scala.concurrent.duration.Duration;

public class SchedulerExample {
    public static void main(String[] args) {
        ActorSystem system = ActorSystem.create("scheduler-example");
        
        // 1초 후에 실행되는 스케줄링 작업 예약
        system.scheduler().scheduleOnce(
                Duration.create(1, "seconds"),
                () -> {
                    System.out.println("Scheduled task executed!");
                    system.terminate();
                },
                system.dispatcher()
        );
    }
}

위의 코드에서 scheduleOnce 메서드를 사용하여 1초 후에 실행되는 스케줄링 작업을 예약했습니다. 이 작업은 람다 함수로 정의되어 있으며, System.out.println을 사용하여 “Scheduled task executed!”를 출력합니다. 마지막으로, system.terminate() 메서드를 호출하여 액터 시스템을 종료합니다.

2. 주기적인 스케줄링 작업 예약하기

주기적인 스케줄링 작업을 예약하려면 schedule 메서드를 사용합니다. 다음은 예제 코드입니다.

import akka.actor.ActorSystem;
import scala.concurrent.duration.Duration;

public class PeriodicSchedulerExample {
    public static void main(String[] args) {
        ActorSystem system = ActorSystem.create("periodic-scheduler-example");
        
        // 1초마다 실행되는 주기적인 스케줄링 작업 예약
        system.scheduler().schedule(
                Duration.Zero(),
                Duration.create(1, "seconds"),
                () -> {
                    System.out.println("Periodic task executed!");
                },
                system.dispatcher()
        );
    }
}

위의 코드에서 schedule 메서드를 사용하여 1초마다 실행되는 주기적인 스케줄링 작업을 예약했습니다. 예제 코드는 위의 예제와 비슷하며, 주기적인 작업은 람다 함수 내에서 수행됩니다.

마무리

Akka를 사용하여 스케줄링 작업을 처리하는 방법에 대해 알아보았습니다. Akka는 고성능 액터 기반 런타임 시스템으로 스케줄링 작업을 간편하게 예약하고 처리할 수 있는 강력한 도구입니다. 해당 내용을 토대로 프로젝트에 적절히 활용해 보세요.

참고 자료