알림 설정 기능 추가와 SSE연결에 이어서 스케쥴러로 알림을 전송해보자.
Spring
스케쥴러로 알림전송
메인 Application에서 @EnableScheduling을 선언해야 스케쥴러를 사용할 수 있다.
@Scheduled로 스케쥴러의 옵션을 설정할 수 있다.
→ cron 표현식으로 매분마다 스케쥴러가 돌도록 설정
알림을 설정한 일정들 중 전송해야 할(= 과거 일정과 이미 전송된 알림을 제외한) 알림들을 List로 가져온다.
알림 타입이 D, H, M인 경우로 나눠서 일정 시작 시간 - 알림 설정 시간이 되면 알림 전송
→ A.isBefore(B) : A가 B보다 과거일 때 실행
알림을 전송할 때 해당 일정의 회원 email과 NotificationResponse를 함께 전송한다.
→ 전송 후에는 sendYn을 Y로 변경
알림으로 보낼 데이터에 받는 회원의 닉네임, 알림메시지, 전송시간을 포함한다.
해당 일정의 회원 Emitter를 가져와 sendEventAlarm이라는 이름으로 notificationResponse와 함께 알림을 전송한다.
→ send.name()으로 설정한 이름으로 프론트엔드에서 addEventListener로 호출 가능
→ send.data()에 알림을 보낼 데이터를 담아줌
로그인 후 일정등록 시 1분 전 알림을 설정하고 요청을 보내면~
오류가..떴다..
찾아보니 세가지 방법이 있다고 한다.
1. @Transactional 붙이기
2. Lazy -> Eager로 바꾸기
3. dto로 바꾸기
참고
테스트
SSE connect 후 알림 설정 시간이 되면 알림이 들어오는 것을 확인할 수 있다.
'Spring' 카테고리의 다른 글
[Spring] JPQL로 일정 조회하기 (0) | 2024.04.02 |
---|---|
[Spring] SSE + Scheduler로 실시간 알림 기능 구현(1) (3) | 2024.03.26 |
[Spring] 일정 등록 시 ToDoList 넣기 (0) | 2024.03.21 |