동작 방식

홍성진·2023년 6월 30일
0

Github 바로가기


단순히 패치노트가 게시되었을 때 디스코드 메시지를 전달하면 되므로, 5분마다 홈페이지의 데이터를 비교하는 방식으로 설계했습니다. 작고 단순한 앱이지만 객체지향적인 설계를 통해 유지보수가 용이하도록 만들어 보고픈 목표가 있었습니다.

Controller 객체가 생성될 때 JDA를 생성하며, Controllerrun 메소드에는 5분마다 반복할 비즈니스 로직이 들어있습니다.

run을 5분마다 실행하기 위해 ScheduledExecutorService을 사용했습니다. 스레드가 더 필요한 게 아니므로 스레드풀은 1로 설정해줍니다.

package bnbnac.discordBot;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class Main {
    private ScheduledExecutorService executor;
    private Controller controller;

    public Main() {
        executor = Executors.newScheduledThreadPool(1);
        controller = new Controller();
    }

    public void start() {
        executor.scheduleAtFixedRate(this::run, 0, 5, TimeUnit.MINUTES);
    }

    public void run() {
        this.controller.run();
    }

    public static void main(String[] args) {
        Main app = new Main();
        app.start();
    }
}

참고 링크

JDA
디스코드 개발자 페이지

0개의 댓글