Skip to content

Commit 42b25d5

Browse files
committed
refactor: 중복알림 캐싱 추가
1 parent e76cbbf commit 42b25d5

3 files changed

Lines changed: 52 additions & 2 deletions

File tree

build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ dependencies {
7575

7676
// firebase
7777
implementation 'com.google.firebase:firebase-admin:9.2.0'
78+
79+
// cache
80+
implementation 'org.springframework.boot:spring-boot-starter-cache'
81+
implementation 'com.github.ben-manes.caffeine:caffeine'
7882
}
7983

8084

src/main/java/apptive/team5/alarm/service/AlarmDispatchService.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,24 @@
66
import apptive.team5.alarm.entity.Alarm;
77
import apptive.team5.alarm.entity.AlarmMessage;
88
import apptive.team5.alarm.event.AlarmCreatedEvent;
9+
import apptive.team5.config.CacheConfig;
910
import apptive.team5.diary.domain.DiaryEntity;
1011
import apptive.team5.diary.service.DiaryLowService;
1112
import apptive.team5.subscribe.domain.Subscribe;
1213
import apptive.team5.subscribe.service.SubscribeLowService;
1314
import apptive.team5.user.domain.UserEntity;
1415
import apptive.team5.user.service.UserLowService;
1516
import lombok.RequiredArgsConstructor;
17+
import org.springframework.cache.annotation.Cacheable;
1618
import org.springframework.context.ApplicationEventPublisher;
1719
import org.springframework.scheduling.annotation.Async;
1820
import org.springframework.stereotype.Service;
1921
import org.springframework.transaction.annotation.Transactional;
2022

2123
import java.util.List;
2224

25+
import static apptive.team5.config.CacheConfig.*;
26+
2327
@Service
2428
@Transactional
2529
@RequiredArgsConstructor
@@ -35,26 +39,26 @@ public class AlarmDispatchService {
3539
private final SubscribeLowService subscribeLowService;
3640

3741
@Async("sendAlarm")
42+
@Cacheable(value = LIKE_ALARM_CACHE, key = "'actor:' + #request.actorId() + ':' + 'diary:' + #request.diaryId()")
3843
public void saveAndDispatchForLike(DiaryLikeAlarmSendRequest request) {
3944

4045
Long actorId = request.actorId();
4146
UserEntity actor = userLowService.findById(actorId);
4247
DiaryEntity diary = diaryLowService.findByIdWithUser(request.diaryId());
4348
UserEntity receiver = diary.getUser();
4449

45-
String title = AlarmMessage.LIKE_ALARM.getMessage();
4650
String content = actor.getUsername() + "님이 회원님의 킬링파트를 좋아합니다.";
4751
String deepLink = DIARY_DEEP_LINK_FORMAT.formatted(diary.getId());
4852

4953
saveAndPublish(receiver, AlarmMessage.LIKE_ALARM, content, deepLink);
5054
}
5155

5256
@Async("sendAlarm")
57+
@Cacheable(value = SUBSCRIBE_ALARM_CACHE, key = "'subscriber:' + #request.subscriberId() + ':' + 'subscribedToUser:' + #request.subscribedToUserId()")
5358
public void saveAndDispatchForSubscribe(SubscribeAlarmSendRequest request) {
5459
UserEntity subscriber = userLowService.findById(request.subscriberId());
5560
UserEntity receiver = userLowService.findById(request.subscribedToUserId());
5661

57-
String title = AlarmMessage.SUBSCRIBE_ALARM.getMessage();
5862
String content = subscriber.getUsername() + "님이 회원님을 픽했어요.";
5963
String deepLink = SUBSCRIBE_DEEP_LINK_FORMAT.formatted(receiver.getId());
6064

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package apptive.team5.config;
2+
3+
import apptive.team5.alarm.entity.AlarmMessage;
4+
import com.github.benmanes.caffeine.cache.Caffeine;
5+
import org.springframework.cache.CacheManager;
6+
import org.springframework.cache.annotation.EnableCaching;
7+
import org.springframework.cache.caffeine.CaffeineCacheManager;
8+
import org.springframework.context.annotation.Bean;
9+
import org.springframework.context.annotation.Configuration;
10+
11+
import java.time.Duration;
12+
13+
@Configuration
14+
@EnableCaching
15+
public class CacheConfig {
16+
17+
public static final String LIKE_ALARM_CACHE = "likeAlarm";
18+
public static final String SUBSCRIBE_ALARM_CACHE = "subscribeAlarm";
19+
20+
@Bean
21+
public CacheManager cacheManager() {
22+
CaffeineCacheManager cacheManager = new CaffeineCacheManager();
23+
24+
25+
cacheManager.registerCustomCache(
26+
LIKE_ALARM_CACHE,
27+
Caffeine.newBuilder()
28+
.expireAfterWrite(Duration.ofMinutes(5))
29+
.build()
30+
);
31+
32+
cacheManager.registerCustomCache(
33+
SUBSCRIBE_ALARM_CACHE,
34+
Caffeine.newBuilder()
35+
.expireAfterWrite(Duration.ofMinutes(5))
36+
.build()
37+
);
38+
39+
return cacheManager;
40+
41+
}
42+
}

0 commit comments

Comments
 (0)