두 번 종료해야 꺼지는 이유?
367
작성한 질문수 31
wakeup()이 호출되지 않으면 종료되지 않고 다시 실행되는 이유가 무엇일까요..?
답변 1
0
안녕하십니까,
consumer는 main thread가 아니라 별도의 thread로 java client application에서 구동됩니다. 때문에 consumer를 정상적으로 종료 시키려면 명시적으로 consumer 객체의 close()를 호출해 줘야 합니다. 그렇지 않고 java application만 종료 시키면 consumer가 정상적으로 종료되지 않을 수 있습니다.
그런데 보통은 consumer가 무한 루프상에서 계속 데이터가 들어올것을 예상하며 poll()을 하고 있기 때문에 loop를 빠져나가서 consumer객체의 close()를 호출하기가 어렵습니다.
때문에 java application을 종료하기 전에 명시적으로 wakeup()을 호출해서 WakeUpException을 발생시켜서 catch finally 절에서 consumer객체의 close()를 호출하게 만들어 줍니다.
보다 자세한 사항은 이전 강의 영상인 Wakeup을 이용하여 Consumer를 효과적으로 종료하기 에서 설명드리고 있으니, 다시한번 참조해 보시면 좋을 것 같습니다.
감사합니다.
virtual box 설치 문제
0
60
2
카프카 서버 구축 관련 문의
0
66
2
카프카 토픽 Key 타입 변경에 관한 질문
0
70
2
Zookeeper에서 KRaft
0
78
1
카프카 학습과 관련하여 질문 드립니다
0
97
2
파티션 증가시 비용 증가 고려
0
71
2
Kafka 초기 Partition 개수 설정 관련 질문
0
82
2
VM 과 도커의 차이
0
139
2
vm 어댑터설정 문의
0
78
2
Cooperative Sticky Rebalancing 질문
0
58
2
consumer 설정 질문
0
68
2
consumer.poll 질문입니다.
1
69
2
mainThread.join() 관련 질문
0
57
2
문의
0
153
2
멀티 브로커 설정 중 포트 충돌 발생
0
120
2
Consumer Group 강의 Lag 질문있습니다!
0
107
2
강의 설명 및 코드 정리
0
174
2
실습 코드는 어디서 받나요.. 아무리 찾아도 엄네요..
0
151
1
java.nio.BufferUnderflowException 에러 발생합니다..
0
156
3
KafkaTimeoutError:
0
157
2
acks 1 이면 비동기가 아니지 않나요?!
0
184
2
Producer의 메시지 비동기화 전송 구현 강좌 내용 중 질문
0
109
2
자문자답: 데이터 누락된다고 하시는 분 참고하세요.
0
215
2
자문자답: kafka Error connecting to node utuntu-20.myguest.virtualbox.org:9092
0
200
2





