diff --git a/src/main/java/page/clab/api/global/common/email/application/EmailAsyncService.java b/src/main/java/page/clab/api/global/common/email/application/EmailAsyncService.java index d82efdce0..d2af3f8ee 100644 --- a/src/main/java/page/clab/api/global/common/email/application/EmailAsyncService.java +++ b/src/main/java/page/clab/api/global/common/email/application/EmailAsyncService.java @@ -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; @@ -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 @@ -33,6 +34,8 @@ public class EmailAsyncService { private static final int MAX_BATCH_SIZE = 10; + private static final BlockingQueue emailQueue = new LinkedBlockingQueue<>(); + @Async public void sendEmailAsync(String to, String subject, String content, List files, EmailTemplateType emailTemplateType) throws MessagingException { log.debug("Sending email to: {}", to); @@ -40,6 +43,7 @@ public void sendEmailAsync(String to, String subject, String content, List } @Async + @Scheduled(fixedRate = 1000) public void processEmailQueue() { try { List batch = new ArrayList<>(); diff --git a/src/main/java/page/clab/api/global/common/email/application/EmailService.java b/src/main/java/page/clab/api/global/common/email/application/EmailService.java index d75dfa267..2532e4d02 100644 --- a/src/main/java/page/clab/api/global/common/email/application/EmailService.java +++ b/src/main/java/page/clab/api/global/common/email/application/EmailService.java @@ -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; @@ -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 @@ -40,8 +37,6 @@ public class EmailService { @Value("${resource.file.path}") private String filePath; - protected static final BlockingQueue emailQueue = new LinkedBlockingQueue<>(); - public List broadcastEmail(EmailDto emailDto, List multipartFiles) { List convertedFiles = multipartFiles != null && !multipartFiles.isEmpty() ? convertMultipartFiles(multipartFiles) @@ -59,7 +54,6 @@ public List broadcastEmail(EmailDto emailDto, List multip throw new MessageSendingFailedException(address + "에게 이메일을 보내는데 실패했습니다."); } }); - emailAsyncService.processEmailQueue(); return successfulAddresses; } @@ -80,7 +74,6 @@ public List broadcastEmailToAllMember(EmailDto emailDto, List