inflearn logo
강의

Course

Instructor

Introduction to Kafka for Immediate Real-World Use

[Practice] Testing to see if it works well

섹션7 51 컨슈머서버 무한 리로드?

140

namastae1125663

24 asked

0

이전에 컨슈머 서버 ( email-send-consumer ) 에서는 문제가없었는데

마지막 email-service에서는
2025-08-28T23:50:12.394+09:00 INFO 40252 --- [ner#0.dlt-0-C-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer-email-service.dlt-29, groupId=email-service.dlt] Discovered group coordinator 13.209.11.23:9092 (id: 2147483646 rack: null)

2025-08-28T23:50:12.394+09:00 INFO 40252 --- [ner#0.dlt-0-C-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer-email-service.dlt-29, groupId=email-service.dlt] Request joining group due to: rebalance failed due to 'The coordinator is not available.' (CoordinatorNotAvailableException)

2025-08-28T23:50:12.396+09:00 INFO 40252 --- [ner#0.dlt-2-C-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer-email-service.dlt-31, groupId=email-service.dlt] Discovered group coordinator 13.209.11.23:9092 (id: 2147483646 rack: null)

2025-08-28T23:50:12.396+09:00 INFO 40252 --- [ner#0.dlt-1-C-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer-email-service.dlt-30, groupId=email-service.dlt] (Re-)joining group

2025-08-28T23:50:12.396+09:00 INFO 40252 --- [ner#0.dlt-2-C-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer-email-service.dlt-31, groupId=email-service.dlt] Request joining group due to: rebalance failed due to 'The coordinator is not available.' (CoordinatorNotAvailableException)

2025-08-28T23:50:12.399+09:00 INFO 40252 --- [ner#0.dlt-0-C-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer-email-service.dlt-29, groupId=email-service.dlt] (Re-)joining group

2025-08-28T23:50:12.401+09:00 INFO 40252 --- [ner#0.dlt-2-C-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer-email-service.dlt-31, groupId=email-service.dlt] (Re-)joining group

2025-08-28T23:50:12.411+09:00 INFO 40252 --- [ner#0.dlt-1-C-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer-email-service.dlt-30, groupId=email-service.dlt] Successfully joined group with generation Generation{generationId=261, memberId='consumer-email-service.dlt-30-5a032e9e-a903-4fb7-9004-487d74eb6c79', protocol='range'}

2025-08-28T23:50:12.411+09:00 INFO 40252 --- [ner#0.dlt-2-C-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer-email-service.dlt-31, groupId=email-service.dlt] Successfully joined group with generation Generation{generationId=261, memberId='consumer-email-service.dlt-31-0cdcda6c-6ddf-4e0b-980a-868f587ed2bd', protocol='range'}

2025-08-28T23:50:12.411+09:00 INFO 40252 --- [ner#0.dlt-0-C-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer-email-service.dlt-29, groupId=email-service.dlt] Successfully joined group with generation Generation{generationId=261, memberId='consumer-email-service.dlt-29-2b16177f-2cc3-44c0-b244-50109078218e', protocol='range'}

2025-08-28T23:50:12.411+09:00 INFO 40252 --- [ner#0.dlt-1-C-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer-email-service.dlt-30, groupId=email-service.dlt] Finished assignment for group at generation 261: {consumer-email-service.dlt-31-0cdcda6c-6ddf-4e0b-980a-868f587ed2bd=Assignment(partitions=[]), consumer-email-service.dlt-29-2b16177f-2cc3-44c0-b244-50109078218e=Assignment(partitions=[user.signed-up.dlt-0]), consumer-email-service.dlt-30-5a032e9e-a903-4fb7-9004-487d74eb6c79=Assignment(partitions=[])}


...
이런식으로 계속 로그가 반복됩니다
프로듀서에 발행은 완료됐고 cli에서 메세지도 확인했는데

컨슈머서버에서 저렇게 자꾸 정상적으로 작동을 하지않습니다

 

@Service
public class UserSignedUpEventConsumer {

    private final EmailLogRepository emailLogRepository;

    public UserSignedUpEventConsumer(EmailLogRepository emailLogRepository) {
        this.emailLogRepository = emailLogRepository;
    }

    @KafkaListener(
            topics = "user.signed-up",
            groupId = "email-service",
            concurrency = "3"
    )
    @RetryableTopic(
            attempts = "5",
            backoff = @Backoff(delay = 1000, multiplier = 2), // 1 초 2초 4초 8초 16초 5번
            dltTopicSuffix = ".dlt"
    )
    public void consume(String message) throws InterruptedException {
        UserSignedUpEvent userSignedUpEvent = UserSignedUpEvent.fromJson(message);

        // 실제 이메일 발송 로직
        String receiverEmail = userSignedUpEvent.getEmail();
        String subject = userSignedUpEvent.getName() + "님 회원가입 ㅊㅋ";
        Thread.sleep(3000);
        System.out.println("메일 발송 완료");

        // 이메일 발송 로그 저장
        EmailLog emailLog = new EmailLog(userSignedUpEvent.getUserId(), receiverEmail, subject);

        emailLogRepository.save(emailLog);
    }

강사님 코드랑 이전 email-send-consumer 서비스 코드 및 야믈파일도 몇번 확인했는데 다른점이 없습니다 왜그런걸까요

kafka EDA msa devops infrastructure

Answer 4

0

jscode

안녕하세요 ! 질문 잘해주셨어요 ~

보내주신 로그들 토대로 디버깅 도와드려볼게요 !

로그를 보니 13.209.11.23:9092에 계속 접속을 시도하고 있는데,

이 브로커가 응답하지 않는 상황인 것 같네요 !

아래 과정들을 통해 차례대로 디버깅해보시는걸 추천드려요 ~

 

[1] 브로커 상태 확인

먼저 Kafka 브로커들이 정상적으로 실행되고 있는지 확인해보세요!

각 EC2에서 docker ps로 Kafka 컨테이너가 잘 돌고 있는지 체크해보시고,

docker logs [컨테이너명]으로 에러가 없는지 확인해보시는걸 추천드려요 !

 

[2] 네트워크 연결 확인

컨슈머 서버에서 브로커 IP로 실제 접속이 되는지 확인해보세요!

telnet 13.209.11.23 9092 명령어로 포트가 열려있는지 테스트해보시는걸 추천드려요 !

 

[3] application.yml 설정 재확인

bootstrap-servers 설정이 정확한지 다시 한번 확인해보세요!

혹시 IP 주소나 포트 번호에 오타가 있을 수도 있어요 ~

가장 가능성이 높은 건 브로커 중 하나가 제대로 실행되지 않았거나,

네트워크 연결에 문제가 있는 상황인 것 같네요!

 

위 과정으로 디버깅 해보시고, 어떤 게 문제인지 파악이 안 되실 경우 또 질문 남겨주세요~~ 😄

0

jscode

안녕하세요 나마스테님! 질문 잘 해주셨습니다:)

제가 휴가 중이라 질문을 늦게 확인했네요ㅠㅠ!

가능하다면 오늘 밤 중이나 내일 오전 전까지

질문해주신 내용에 대해 답변 남겨놓겠습니다!!

0

namastae1125663

AI도 그렇고 gpt도 그렇고 컨슈머 그룹 ID 를 동일하게 쓰면안된다고하는데 강사님 영상이나 pdf에서 둘다 그룹id똑같이 쓴것같아서 추가로 댓글 남깁니다

 

@KafkaListener(         topics = "user.signed-up",         groupId = "email-service",         concurrency = "3" )

=====dlt====

 

@KafkaListener(
        topics = "user.signed-up.dlt",
        groupId = "email-service"
)

 

 

0

jscode

기존 답변에 잘못된 내용이 있어서 새로운 답변을 다시 남깁니다:)

 

Consumer Group ID를 메인 토픽과

DLT 토픽에서 동일하게 사용하는 것은 전혀 문제가 없습니다 !

서로 다른 토픽은 독립적으로 동작을 해요 !

user.signed-up 토픽과 user.signed-up.dlt 토픽은 완전히 별개의 토픽이라서

같은 Group ID를 사용해도 Kafka는 각 토픽을 독립적으로 관리합니다!

 

추가로 궁금하신 점 있으시면 언제든 질문해주세요😄

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 나마스테님!

Kafka Consumer에서 무한 리로드 문제를 겪고 계신 것 같네요. 이는 주로 Kafka 컨슈머 그룹이 코디네이터를 찾지 못하거나, 컨슈머 그룹 간 조정이 제대로 이루어지지 않을 때 발생할 수 있습니다. 또한, 특정 설정 문제나 네트워크 문제도 원인일 수 있습니다. 이 문제를 해결하기 위해 다음 사항들을 점검해 보세요.

해결 방안:

  1. 오프셋 문제 확인:

    • 오류 발생 시 컨슈머가 오프셋 문제로 인해 메시지를 정상적으로 처리하지 못하는 경우일 수 있습니다. Kafka 관리툴(Kafka manager 등)을 통해 특정 메시지 오프셋에 문제가 없는지 확인해 보세요.
  2. 컨슈머 그룹 ID 확인:

    • groupId가 정상적으로 설정되어 있는지 확인하세요. 만약 동일한 그룹 ID를 여러 컨슈머에서 사용하고 있다면 브로커 간 충돌이 생길 수 있습니다.
  3. 코디네이터 가용성 문제 극복:

    • ConsumerCoordinator 관련 오류 메시지는 컨슈머 그룹 코디네이터를 찾지 못하거나 사용자가 감지할 수 없는 네트워크 이슈로 인해 발생할 수 있습니다. 이 경우 Kafka 클러스터의 네트워크 설정을 확인하세요.

    • 특히, 설정 파일에 정의된 bootstrap.servers의 호스트와 포트가 올바른지 확인하세요.

  4. 재시도 로직 확인:

    • @RetryableTopic의 설정을 확인하여, 재시도 시 컨슈머가 설정된 대로 동작하고 있는지 확인하세요. 무한 루프가 설정 때문인지 확인이 필요합니다. 특히 backoffattempts 설정이 실제로 의도한 대로 동작하는지 로그를 통해 확인해 보세요.
  5. 성공적인 메시지 처리 검토:

    • 메시지가 성공적으로 처리된 후 log 및 commit이 정상적으로 이루어졌는지 확인하셔야 합니다. 오프셋이 정상적으로 커밋되지 못할 경우, 무한 대기 상태에 빠질 수 있습니다.

추가 자료:

위의 방법들로 해결이 되지 않는다면, 아래 유사한 질문들을 확인하여 다른 개발자들의 해결 방안을 참고하셔도 좋습니다:

이 정보가 문제 해결에 도움이 되기를 바라며, 질문자님의 이해를 돕기 위해 유사한 질문 및 답변 링크를 제공하였습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시다면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

2. Kafka 설치 파일 다운받기 404 Not Found 오류 관련

0

55

2

UserSignedUpEventConsumer 에서 로그 DB 저장 문의

0

47

2

리더 파티션 선출 규칙에 관한 질문

0

67

2

kafka 실패 후 재시도 DLT 소비 무한으로 하는 현상이 발생합니다

1

138

2

질문드립니다.

0

52

2

잘못된 이메일 주소로 인해 발송 실패 코드

0

105

3

카프카 서버 관련 질문입니다.

0

88

2

선생님 질문이 있습니다. 왜 바로 aws 설치 하시는지 궁금합니다.

0

97

2

Kafka 음성메세지 브로커로도 적합한가요?

0

77

2

재시도조차 실패한 메시지 사후 처리하기

1

107

2

retry 시 동작과정 질문

0

116

2

JsonSerializer & JsonDeserializer

0

72

2

auto.create.topics.enable=false 설정

0

95

2

email 발송 로직 관련

0

68

2

concurrency 설정 + 같은 groupId 내에 consumer 여러개

0

74

2

concurrency 동작 안됨

0

69

3

컨슈머 서버 점진적 배포 시나리오

0

60

2

Connection -1

0

57

2

적정 파티션 개수 계산하는 방법 질문드립니다

0

126

2

섹션5 33 질문드립니다

0

43

1

aws아닌 도커로는 안되나요?

0

100

2

파티션 증가 질문드립니다

0

74

2

섹션6 43 질문드립니다

0

53

3

kafka [37강의]

0

59

2