From de1022dd44e91ac04cebba0fdc7fcd854f79bed5 Mon Sep 17 00:00:00 2001 From: mmihye Date: Fri, 19 Jan 2024 03:24:22 +0900 Subject: [PATCH] =?UTF-8?q?[#185]=20fix:=20transactionManager=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../external/client/fcm/FCMService.java | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/linkmind/src/main/java/com/app/toaster/external/client/fcm/FCMService.java b/linkmind/src/main/java/com/app/toaster/external/client/fcm/FCMService.java index 36be35f..f3ab511 100644 --- a/linkmind/src/main/java/com/app/toaster/external/client/fcm/FCMService.java +++ b/linkmind/src/main/java/com/app/toaster/external/client/fcm/FCMService.java @@ -145,23 +145,33 @@ public void schedulePushAlarm(String cronExpression,Long timerId) { throw new RuntimeException(e); } + TransactionDefinition transactionDefinition = new DefaultTransactionDefinition(); + TransactionStatus transactionStatus = transactionManager.getTransaction(transactionDefinition); - Reminder timer = timerRepository.findById(timerId).orElseThrow( - ()-> new NotFoundException(Error.NOT_FOUND_TIMER, Error.NOT_FOUND_TIMER.getMessage()) - ); + try { + + Reminder timer = timerRepository.findById(timerId).orElseThrow( + ()-> new NotFoundException(Error.NOT_FOUND_TIMER, Error.NOT_FOUND_TIMER.getMessage()) + ); + + String cron = String.format("0 %s %s * * ?", timer.getRemindTime().getMinute(),timer.getRemindTime().getHour()); - String cron = String.format("0 %s %s * * ?", timer.getRemindTime().getMinute(),timer.getRemindTime().getHour()); + // 현재 알람이 커져있고 설정값이 동일하면 알람 전송 + if(timer.getIsAlarm() && timer.getUser().getFcmIsAllowed() && cronExpression.equals(cron)) { + System.out.println("================= 전송시간 ================="); + //sqs 푸시 + FCMPushRequestDto request = getPushMessage(timer,toastRepository.getUnReadToastNumber(timer.getUser().getUserId()) ); - // 현재 알람이 커져있고 설정값이 동일하면 알람 전송 - if(timer.getIsAlarm() && timer.getUser().getFcmIsAllowed() && cronExpression.equals(cron)) { - System.out.println("================= 전송시간 ================="); - //sqs 푸시 - FCMPushRequestDto request = getPushMessage(timer,toastRepository.getUnReadToastNumber(timer.getUser().getUserId()) ); + sqsProducer.sendMessage(request); - sqsProducer.sendMessage(request); + System.out.println("========="+request.getTitle() + request.getBody()+"========="); - System.out.println("========="+request.getTitle() + request.getBody()+"========="); + } + } catch (PessimisticLockingFailureException | PessimisticLockException e) { + transactionManager.rollback(transactionStatus); + } finally { + em.close(); }