인프런 커뮤니티 질문&답변

kekekiki님의 프로필 이미지

작성한 질문수

실습으로 배우는 선착순 이벤트 시스템

Consumer 사용하기

kafka 컨슈머 테스트 시 Thread.sleep 이외 방법

작성

·

675

0

안녕하세요.

kafka 동시성 테스트 시 컨슈머가 비동기로 데이터를 처리하니까 컨슈머가 모든 데이터를 polling하기 전에 이미 메인 스레드가 종료되어 테스트 케이스가 실패로 끝나는 경우에서요.

Thread.sleep으로 일정 시간을 멈추는 방법 말고는 처리할 수 있는 또 다른 방법이 있을까요?

답변 2

0

최상용님의 프로필 이미지
최상용
지식공유자

kekekiki 님 안녕하세요.
Thread.sleep 을 제외하고는 다른 방법이 떠오르지가 않는군요..

조금 첨언하자면 실무에서는 프로듀서를 통해 데이터 전송하는 것까지만 확인하는 것이 일반적입니다.
api 에서는 데이터 전송까지만 정상적으로 되었다면 정상적인 응답이라고 판단하는 것 입니다.
그리고 consumer 에서는 데이터를 받았을 때 정상적으로 처리하는지만 테스트 하는 것이 일반적입니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴이에요.

kafka 컨슈머 테스트에서 컨슈머가 모든 데이터를 polling하기 전에 메인 스레드가 종료되는 문제가 발생하는 것 같네요. Thread.sleep은 일정 시간 동안 대기하는 방법이기 때문에, 더 효율적인 대안이 있을 수 있습니다.

처리할 수 있는 다른 방법으로는, 프로듀서와 컨슈머가 모두 처리를 완료한 후에 메인 스레드를 종료하도록 하는 방법이 있습니다. 이를 위해선 프로듀서와 컨슈머의 작업을 동기적으로 처리해야 합니다.

예를 들어, 컨슈머가 모든 데이터를 처리할 때까지 무한루프를 돌며 계속해서 데이터를 가져오는 형태로 코드를 작성하고, 프로듀서도 처리 완료 후에 테스트를 종료하는 방식입니다. 이렇게 하면 메인 스레드가 종료되는 문제를 해결할 수 있습니다.

하지만 이 역시 테스트 가용성에 영향을 줄 수 있으니, 실제 운영에서는 테스트를 위한 임시적인 방법이라고 생각하시고, Thread.sleep을 사용하는 방식이나 다른 방법들을 고려해보세요.

더 나은 대안을 제공해드리지 못해 죄송하지만, 도움이 되셨으면 좋겠습니다. 추가로 궁금한 점이 있으면 언제든지 물어보세요. 즐거운 프로그래밍 하세요!

kekekiki님의 프로필 이미지

작성한 질문수

질문하기