Skip to content

복습 대상 URL 이메일 전송 스케줄러 구현 #16

Description

@jhan0121

✨ 구현 할 기능

매일 오전 8시마다 복습 대상 URL을 DB에서 조회하여 각 사용자에게 이메일로 전송하는 스케줄러 기능을 구현한다.

📢 구현 방식

1. 스케줄링

  • @EnableScheduling을 통해 스케줄링 활성화
  • @Scheduled(cron = "0 0 8 * * *") 어노테이션을 사용하여 매일 오전 8시 실행

2. 비동기 처리

  • @EnableAsync를 통해 비동기 처리 활성화
  • @Async 어노테이션을 사용하여 이메일 전송을 비동기로 처리
  • 스케줄러 실행 지연을 방지하기 위해 이메일 전송 작업을 별도 스레드에서 수행

3. 이메일 본문 렌더링

  • Thymeleaf 템플릿 엔진을 사용하여 HTML 이메일 본문 생성
  • 유저별 복습 대상 URL 목록을 템플릿에 바인딩

4. 전체 처리 흐름

[Scheduler 실행 (08:00)]
        ↓
[오늘 날짜 기준 복습 대상 ReviewCycle 조회]
        ↓
[유저별로 복습 URL 그룹핑]
        ↓
[각 유저별 HTML 렌더링 + 이메일 전송 (비동기)]

📑 기능 명세

설정

  • @EnableScheduling 설정 추가

스케줄러

  • ReviewNotificationScheduler 클래스 생성
  • 매일 오전 8시 실행되는 스케줄 메서드 구현
  • 오늘 날짜 기준 복습 대상 조회 로직 구현

데이터 조회

  • ReviewCycleRepository에 오늘 날짜 기준 복습 대상 조회 쿼리 추가
  • 유저별 복습 URL 그룹핑 로직 구현

이메일 전송

  • 복습 알림용 HTML 이메일 템플릿 생성 (review-notification.html)
  • Thymeleaf를 사용한 HTML 렌더링 로직 구현

테스트

  • 스케줄러 단위 테스트 작성
  • 이메일 전송 비동기 처리 테스트

📕 래퍼런스

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions