Skip to content

Commit

Permalink
[MERGE] 실제 알림 오도록 구현 - #390 (#391)
Browse files Browse the repository at this point in the history
  • Loading branch information
rlarlgnszx authored Oct 1, 2024
2 parents c1f738f + 8dd4ab4 commit 289bb9a
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
package org.sopt.app.application.fortune;

import jakarta.transaction.Transactional;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.sopt.app.common.utils.HttpHeadersUtils;
import org.sopt.app.domain.enums.NotificationCategory;
import org.sopt.app.presentation.fortune.FortuneAlarmRequest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*;
import org.springframework.scheduling.annotation.Async;
import org.springframework.context.event.EventListener;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;
import org.springframework.transaction.event.TransactionPhase;
import org.springframework.transaction.event.TransactionalEventListener;
import org.springframework.web.client.RestTemplate;

@Component
Expand All @@ -25,9 +23,7 @@ public class FortuneEventListener {
@Value("${makers.push.server}")
private String baseURI;

@Async
@Transactional(value = Transactional.TxType.REQUIRES_NEW)
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
@EventListener
public void sendFortuneAlarm(FortuneEvent fortuneEvent) {
HttpEntity<FortuneAlarmRequest> entity = new HttpEntity<>(
createBodyFor(fortuneEvent.getUserId()),
Expand All @@ -46,9 +42,9 @@ private FortuneAlarmRequest createBodyFor(Long userId) {
);
}

private ResponseEntity<FortuneAlarmRequest> sendRequestToAlarmServer(
private void sendRequestToAlarmServer(
HttpEntity<FortuneAlarmRequest> requestEntity) {
return restTemplate.exchange(
restTemplate.exchange(
baseURI,
HttpMethod.POST,
requestEntity,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import java.util.List;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import lombok.RequiredArgsConstructor;
import org.sopt.app.application.notification.NotificationService;
import org.sopt.app.common.event.Events;
Expand All @@ -20,8 +22,11 @@ public class FortuneScheduler {
public void runDailyFortuneCreation() {
RegisterNotificationRequest registerNotificationRequest = createFortuneNotificationRequest();
List<Long> playgroundIds = notificationService.registerNotification(registerNotificationRequest);
playgroundIds
.forEach(userId -> Events.raise(FortuneEvent.of(userId)));
try (ExecutorService executorService = Executors.newVirtualThreadPerTaskExecutor()) {
playgroundIds.forEach(userId ->
executorService.submit(() -> Events.raise(FortuneEvent.of(userId)))
);
}
}

private RegisterNotificationRequest createFortuneNotificationRequest() {
Expand Down
26 changes: 10 additions & 16 deletions src/main/java/org/sopt/app/application/poke/PokeEventListener.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,21 @@
package org.sopt.app.application.poke;

import jakarta.transaction.Transactional;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.val;
import org.sopt.app.common.utils.HttpHeadersUtils;
import org.sopt.app.domain.enums.NotificationCategory;
import org.sopt.app.presentation.poke.PokeRequest;
import org.sopt.app.presentation.poke.PokeResponse;

import org.springframework.transaction.event.TransactionPhase;
import org.springframework.transaction.event.TransactionalEventListener;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.client.RestTemplate;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

import jakarta.transaction.Transactional;
import java.util.List;
import java.util.UUID;

import lombok.RequiredArgsConstructor;
import lombok.val;
import org.springframework.transaction.event.TransactionPhase;
import org.springframework.transaction.event.TransactionalEventListener;
import org.springframework.web.client.RestTemplate;

@Component
@RequiredArgsConstructor
Expand Down Expand Up @@ -52,8 +46,8 @@ private PokeRequest.PokeAlarmRequest createBodyFor(Long pokedUserId) {
"home/poke/notification-list"
);
}
private ResponseEntity<PokeResponse.PokeAlarmStatusResponse> sendRequestToAlarmServer(HttpEntity requestEntity) {
return restTemplate.exchange(
private void sendRequestToAlarmServer(HttpEntity requestEntity) {
restTemplate.exchange(
baseURI,
HttpMethod.POST,
requestEntity,
Expand Down

0 comments on commit 289bb9a

Please sign in to comment.