From 4c63f423d823965dac7f088f497bf5eeb6847880 Mon Sep 17 00:00:00 2001 From: flowerdonk <122508480+flowerdonk@users.noreply.github.com> Date: Mon, 14 Aug 2023 16:00:50 +0900 Subject: [PATCH] Feat/sse (#110) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix: 오류 수정 * Fix: 구독 목록 불러오기 수정 * Fix: transactional readonly 삭제 * Fix: sse 연결 방식 수정 * Remove: pub/sub 파일 삭제 * Feat: ExecutorService 추가 --- .../com/anywayclear/service/AlarmService.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/anywayclear/service/AlarmService.java b/src/main/java/com/anywayclear/service/AlarmService.java index 22d2504..1f8aebf 100644 --- a/src/main/java/com/anywayclear/service/AlarmService.java +++ b/src/main/java/com/anywayclear/service/AlarmService.java @@ -16,6 +16,8 @@ import java.io.IOException; import java.time.LocalDateTime; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -27,6 +29,7 @@ public class AlarmService { // 리포지토리 대신 템플릿 사용 private final RedisTemplate redisAlarmTemplate; + private final ExecutorService excutor = Executors.newSingleThreadExecutor(); // 구독 목록 불러오기 위한 서비스 private final SubscribeRepository subscribeRepository; @@ -171,13 +174,16 @@ public AlarmResponseList getDibAlarmList(String memberId) { // 해당 유저의 public void sendToClient(SseEmitter emitter, String key, String name, Object data) { log.info("key={}, name={}, message={}",key, name, data); - try { - emitter.send(SseEmitter.event() - .id(key) - .name(name) - .data(data)); - } catch (IOException e) { - sseRepository.remove(key); - } + + excutor.execute(() -> { + try { + emitter.send(SseEmitter.event() + .id(key) + .name(name) + .data(data)); + } catch (IOException e) { + sseRepository.remove(key); + } + }); } }