File tree Expand file tree Collapse file tree
src/main/java/clovar/howkiki/domain/notification/service Expand file tree Collapse file tree Original file line number Diff line number Diff line change 22
33import clovar .howkiki .global .exception .CustomException ;
44import com .fasterxml .jackson .databind .ObjectMapper ;
5+ import jakarta .annotation .PreDestroy ;
56import lombok .RequiredArgsConstructor ;
67import lombok .extern .slf4j .Slf4j ;
78import org .springframework .stereotype .Service ;
89import org .springframework .web .servlet .mvc .method .annotation .SseEmitter ;
910
1011import java .io .IOException ;
11- import java .util .Map ;
12- import java .util .Timer ;
13- import java .util .TimerTask ;
12+ import java .util .*;
1413import java .util .concurrent .ConcurrentHashMap ;
1514import 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}
You canโt perform that action at this time.
0 commit comments