본문 바로가기
Spring

[Spring] SSE + Scheduler로 실시간 알림 기능 구현(2)

by qoth_0 2024. 3. 27.
728x90
반응형

 

 

[Spring] SSE + Scheduler로 실시간 알림 기능 구현(1)

[Spring] 일정 등록 시 ToDoList 넣기 💡 ToDoList 입력은 선택사항 (없어도 일정등록 가능해야 함) 💡 하나의 일정에 여러 ToDoList 입력 가능 → 테이블 따로 생성 ERD 투두리스트가 일정ID를 FK로 갖고 있

qoth-0.tistory.com

알림 설정 기능 추가와 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로 바꾸기

 

 

[JPA] could not initialize proxy - no Session 에러

JPA를 사용하면서 자주 접하는 에러이다. 쉽게 해결하고 넘어갈 수 있는 내용이지만, 파고 공부하면 얻을게 상당히 많아서 글로 작성해봤다. 글을 통해 JPA와 더 친해져보자.

velog.io

 

 

JPA/ could not initialize proxy - no Session

1.문제점 JPA를 통한 개발을 하다보면 한번쯤 만날 수 밖에없는 에러이다. JPA를 사용하여 DB에 저장된 리소스를 불러와서 반환하는 경우, 혹은 사용할 때 발생했던 에러이다. 2.접근 JPA에 대한 이

cantcoding.tistory.com

참고

 

 

 테스트

 

 

SSE connect 후 알림 설정 시간이 되면 알림이 들어오는 것을 확인할 수 있다.

 

 

728x90
반응형