Skip to content

Commit

Permalink
지원단위별 계정 통합 생성 시 이메일이 보내지지 않는 현상 해결 (#376)
Browse files Browse the repository at this point in the history
* fix: emailQueue 위치 EmailAsyncService 내부로 변경 #375

* fix: processEmailQueue에 스케줄러 재도입 #375
  • Loading branch information
SongJaeHoonn authored Jun 15, 2024
1 parent 7ac4c49 commit 390493d
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import page.clab.api.global.common.email.domain.EmailTask;
import page.clab.api.global.common.email.domain.EmailTemplateType;
Expand All @@ -18,8 +19,8 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static page.clab.api.global.common.email.application.EmailService.emailQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

@Service
@Slf4j
Expand All @@ -33,13 +34,16 @@ public class EmailAsyncService {

private static final int MAX_BATCH_SIZE = 10;

private static final BlockingQueue<EmailTask> emailQueue = new LinkedBlockingQueue<>();

@Async
public void sendEmailAsync(String to, String subject, String content, List<File> files, EmailTemplateType emailTemplateType) throws MessagingException {
log.debug("Sending email to: {}", to);
emailQueue.add(new EmailTask(to, subject, content, files, emailTemplateType));
}

@Async
@Scheduled(fixedRate = 1000)
public void processEmailQueue() {
try {
List<EmailTask> batch = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import page.clab.api.domain.member.application.MemberService;
import page.clab.api.domain.member.domain.Member;
import page.clab.api.domain.member.dto.response.MemberResponseDto;
import page.clab.api.global.common.email.domain.EmailTask;
import page.clab.api.global.common.email.domain.EmailTemplateType;
import page.clab.api.global.common.email.dto.request.EmailDto;
import page.clab.api.global.common.email.exception.MessageSendingFailedException;
Expand All @@ -23,8 +22,6 @@
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

@Service
@RequiredArgsConstructor
Expand All @@ -40,8 +37,6 @@ public class EmailService {
@Value("${resource.file.path}")
private String filePath;

protected static final BlockingQueue<EmailTask> emailQueue = new LinkedBlockingQueue<>();

public List<String> broadcastEmail(EmailDto emailDto, List<MultipartFile> multipartFiles) {
List<File> convertedFiles = multipartFiles != null && !multipartFiles.isEmpty()
? convertMultipartFiles(multipartFiles)
Expand All @@ -59,7 +54,6 @@ public List<String> broadcastEmail(EmailDto emailDto, List<MultipartFile> multip
throw new MessageSendingFailedException(address + "에게 이메일을 보내는데 실패했습니다.");
}
});
emailAsyncService.processEmailQueue();
return successfulAddresses;
}

Expand All @@ -80,7 +74,6 @@ public List<String> broadcastEmailToAllMember(EmailDto emailDto, List<MultipartF
throw new MessageSendingFailedException(member.getEmail() + "에게 이메일을 보내는데 실패했습니다.");
}
});
emailAsyncService.processEmailQueue();
return successfulEmails;
}

Expand All @@ -104,7 +97,6 @@ public void broadcastEmailToApprovedMember(Member member, String password) {
} catch (MessagingException e) {
throw new MessageSendingFailedException(member.getEmail() + " 계정 발급 안내 메일 전송에 실패했습니다.");
}
emailAsyncService.processEmailQueue();
}

public void sendPasswordResetEmail(Member member, String code) {
Expand Down

0 comments on commit 390493d

Please sign in to comment.