Skip to content

Commit 7c6c92e

Browse files
Merge pull request #60 from Clover-21/develop
webServerGracefulShutdown - SSE๋กœ ์ธํ•œ tomcat ์ •์ƒ ์ข…๋ฃŒ ๋ถˆ๊ฐ€ ์—๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฐํฌ
2 parents 1b86124 + c50c5f5 commit 7c6c92e

1 file changed

Lines changed: 21 additions & 3 deletions

File tree

โ€Žsrc/main/java/clovar/howkiki/domain/notification/service/SseService.javaโ€Ž

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22

33
import clovar.howkiki.global.exception.CustomException;
44
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import jakarta.annotation.PreDestroy;
56
import lombok.RequiredArgsConstructor;
67
import lombok.extern.slf4j.Slf4j;
78
import org.springframework.stereotype.Service;
89
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
910

1011
import java.io.IOException;
11-
import java.util.Map;
12-
import java.util.Timer;
13-
import java.util.TimerTask;
12+
import java.util.*;
1413
import java.util.concurrent.ConcurrentHashMap;
1514
import static clovar.howkiki.global.exception.ErrorCode.*;
1615

@@ -117,4 +116,23 @@ private SseEmitter getSseEmitter(String sessionToken) {
117116
}
118117
}
119118

119+
@PreDestroy
120+
public void shutdown() {
121+
log.info("์„œ๋ฒ„ ์ข…๋ฃŒ: ๋ชจ๋“  SSE ์—ฐ๊ฒฐ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค...");
122+
123+
// ์•ˆ์ „ํ•œ ๋ฐ˜๋ณต์„ ์œ„ํ•ด ๋ณต์‚ฌ ํ›„ ์ฒ˜๋ฆฌ
124+
List<SseEmitter> emitterList = new ArrayList<>(emitters.values());
125+
for (SseEmitter emitter : emitterList) {
126+
try {
127+
emitter.complete(); // ์ •์ƒ ์ข…๋ฃŒ
128+
} catch (Exception e) {
129+
log.error("SSE ์ข…๋ฃŒ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {}", e.getMessage());
130+
}
131+
}
132+
133+
emitters.clear(); // ๋ชจ๋“  Emitter ์ œ๊ฑฐ
134+
log.info("๋ชจ๋“  SSE ์—ฐ๊ฒฐ ์ •๋ฆฌ ์™„๋ฃŒ");
135+
}
136+
137+
120138
}

0 commit comments

Comments
ย (0)