[Spring] SSE + Scheduler로 실시간 알림 기능 구현(2)
[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 후 알림 설정 시간이 되면 알림이 들어오는 것을 확인할 수 있다.