Java190 Quartz 라이브러리 기본 구성 ✅ Quartz의 기본 구성 요소 구성요소 설명Job실제로 수행할 작업을 정의한 인터페이스 (org.quartz.Job)Spring에서는 @Component, @DisallowConcurrentExecution 등으로 관리 가능JobDetailJob 인스턴스를 정의하고 구성하는 정보 객체 (Job의 클래스, 이름, 그룹, 데이터 등 포함)Job 클래스에 대한 메타 정보라고 할 수 있고, 동일 Job이라도 파라미터 달리 해서 여러 개 만들 수 있음TriggerJob이 언제 실행될지를 정의 (시간, 주기, 조건 등)단일 Job에 여러 개도 붙을 수 있음JobDataMapJob 실행 시 함께 전달할 데이터(Map 구조)JobDetail과 Trigger 양쪽에서 설정 가능. 병합되어 Job에 전달됨Schedul.. 2025. 4. 5. 스케줄러 cron 설정을 Global Properties 값으로 변경 스케줄러의 실행 시점을 설정해주는 cron 설정에 Enum상수의 필드값을 사용할 수 없었습니다.private String every30Minutes = ServerProperties.SCHEDULER_CRON.getValue();@Scheduled( cron = every30Minutes, zone = "Asia/Seoul" ) @Transactional public void findExpiredMembers(){실행 결과 : error: element value must be a constant expression @Scheduled( cron = every30Minutes, zone = "Asia/Seoul" ) ^이는 컴파일 타임에 @Sched.. 2024. 7. 1. ChannelGroup과 GlobalEventExecutor ChannelGroup 생성 시 왜 GlobalEventExecutor 를 사용하는지, GlobalEventExecutor 가 어떤건지 여쭤보셨습니다. GlobalEventExecutor 가 단일 스레드 싱글톤 EventExecutor라는 내용은 알고 있었지만 어떻게 동작하는지는 알고 있지 않아서 이에 대해 알아보고자 합니다. ChannelGroup우선 ChannelGroup은 채널을 저장할 수 있으며, Channel이 닫히면 ChannelGroup 컬렉션에서도 자동으로 제거되는 Netty 제공 인터페이스입니다. 여러 Channel을 그룹화하여 관리하는 인터페이스라고 볼 수 있습니다.ChannelGroup 은 스레드 안전하며, 하나의 channel은 여러 ChannelGroup에 속할 수 있고, 소속된.. 2024. 7. 1. @TransactionalEventListener @transactionalEventListener 가어떻게 이벤트를 인식하여 리스너를 실행하는지 알아보겠습니다. Spring에서의 Spring event의 실행 단계 : 생성 주체에서 이벤트를 발생하면 이벤트 디스패처에게 전달이벤트 디스패처가 이벤트 핸들러를 연결이벤트 핸들러에서 이벤트에 담긴 데이터를 통해 원하는 기능을 실행이번에 사용한 @TransactionalEventListener 는 적용할 메서드의 매개변수에 이벤트 객체를 정의해주면 지정한 이벤트가 발생했을 때 수신해서 처리할 수 있습니다. (이 점은@EventListener 와 동일)또한 이벤트 발행자의 트랜잭션을 기준으로 이벤트 실행 시점을 조절할 때 사용할 수 있습니다.option :AFTER_COMMIT (default) : 트랜잭션이 .. 2024. 7. 1. TCP Keepalive TCP 연결이 설정된 이후 정상적인 상황이라면 FIN 메시지를 송수신 했을 때, 연결이 해제됩니다.하지만 전원이 차단되거나 오류에 의해 오동작을 하면 하나의 단말만 연결이 유지되는 Half Open Connection이 발생할 수 있습니다. 이러한 소켓이 꽉차면 정상적인 Connection요청에 응답을 할 수 없는 상황이 발생하게 됩니다.이런 현상을 막기 위해 Keep-alive라는 기능이 있습니다. TCP KeepaliveTcp Keep-alive는 한 번 맺은 세션을 요청이 끝나더라도 유지해주는 기능입니다. tcp_keepalive_time으로 설정한 keepalive timeout 시간이 지나면 서버에서 Keepalive 확인 패킷을 보냅니다.이 패킷에 대한 응답(ACK 패킷)을 받으면 타이머는 원.. 2024. 6. 24. Netty의 이벤트 루프 이해하기 이벤트 루프 기반 프레임워크 동작 방식은 단일 스레드 이벤트 루프와 다중 스레드 이벤트 루프로 나눌 수 있습니다.Netty 동작 방식 이해를 위해 두 가지 차이점을 비교해보겠습니다. 단일 스레드 이벤트 루프이는 이벤트를 처리하는 스레드가 하나인 상태를 의미합니다. 이벤트 루프의 구현이 단순하고 예측 가능한 동작을 보장합니다. 하나의 스레드가 이벤트 큐에 입력된 이벤트를 처리하므로 이벤트가 발생한 순서대로 처리할 수 있습니다.단점 1 - 다중 코어 CPU를 효율적으로 사용하지 못함단점 2 - 이벤트 메서드에 처리 시간이 오래 걸리는 작업이 있는 경우 다음 이벤트 처리 지연 발생대표적인 프레임워크 - Node.js 다중 스레드 이벤트 루프이벤트를 처리하는 스레드가 여러개입니다. 단일 스레드 이벤트 루.. 2024. 6. 20. 이전 1 2 3 4 ··· 32 다음