강의

멘토링

커뮤니티

Inflearn Community Q&A

dpwns5239505's profile image
dpwns5239505

asked

Kafka Complete Guide - Core

Implementing Producer in Java - 02

java.nio.BufferUnderflowException 에러 발생합니다..

Written on

·

139

0

안녕하세요 해당 강의듣고 있는데

Java 기반에서 Producer 구현하기02를 보고

 

카프카 브로커에 메시지를 보냈습니다.

 

환경은 다음과 같습니다.

 

카프카 브로커: ec2 환경 (포트 열린건 확인했슴니당..)

카프카 컨플루언트 7.1.2

 

프로듀서: 로컬환경(맥)

카프카클라이언트 3.1.0

 

프로듀서(로컬)에서 메시지 send를 하면 java.nio.BufferUnderflowException해당 에러만 발생합니다.

[kafka-producer-network-thread | producer-1] ERROR org.apache.kafka.clients.producer.internals.Sender - [Producer clientId=producer-1] Uncaught error in kafka producer I/O thread:

java.lang.IllegalStateException: There are no in-flight requests for node 1

at org.apache.kafka.clients.InFlightRequests.requestQueue(InFlightRequests.java:62)

at org.apache.kafka.clients.InFlightRequests.completeNext(InFlightRequests.java:70)

at org.apache.kafka.clients.NetworkClient.handleCompletedReceives(NetworkClient.java:872)

at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:569)

at org.apache.kafka.clients.producer.internals.Sender.runOnce(Sender.java:328)

at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:243)

at java.base/java.lang.Thread.run(Thread.java:833)

[kafka-producer-network-thread | producer-1] INFO org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Node 1 disconnected.

 

해당 에러가 반복되고있고. 해결방법을 못찾겠네요 ㅠㅠ 트러블슈팅해봐도 감을 못잡겠어서 도움요청드려요..

 


카프카 브로커를 도커로 띄워놓고 logs로 보는데, 아무런 로그가 생성되지않고 있습니다!

 

제대로 send되는 것 같지 않아서 뭘 봐야되는지 모르겠네요..

 

kafka데이터-엔지니어링

Answer 3

0

dooleyz3525님의 프로필 이미지
dooleyz3525
Instructor

안녕하십니까,

해결이 되었다니 다행이군요.

강의 실습 환경은 Private 네트웍 구성(동일 router로 구성된 네트웍)을 가정하고 만들어졌습니다.

EC2와 같은 Public 네트웍 서버에 있는 Broker에 public ip로 접속하려면 advertiese_listener 설정이 되어 있어야 합니다(생각해 보니, 이 부분을 강의에서 설명한다면서 빼먹었습니다).

 

감사합니다.

0

dpwns5239505님의 프로필 이미지
dpwns5239505
Questioner

AI 인턴 보고 해결했습니다..

advertised.listeners 설정 문구를 보고 공인 IP로 바꿔보니 되네요

링크로 걸어준 스프링 연결시 오류 < 와 동일한 문제였습니다!

0

안녕하세요, 인프런 AI 인턴입니다.

임예준님, Java 기반에서 Kafka Producer 구현 중 발생한 java.nio.BufferUnderflowException 에러는 주로 클라이언트와 브로커 간의 네트워크 연결 문제나 브로커 설정 문제로 인해 발생할 수 있습니다. 아래의 몇 가지 체크포인트를 확인해 보시길 권장드립니다:

  1. 브로커 접속 정보 확인: 프로듀서 설정 파일에서 bootstrap.servers가 올바르게 설정되어 있는지 확인해주세요. EC2 환경에서 브로커를 실행 중이라면 해당 인스턴스의 공인 IP 주소와 포트가 올바르게 기재되어 있어야 합니다.

  2. 네트워크 설정 확인: EC2 인스턴스의 방화벽 설정이 올바르게 되어 있어야 합니다. 9092 포트가 외부 접근이 가능하도록 설정되어 있는지 확인해주세요.

  3. advertised.listeners 설정: EC2에서 Kafka를 실행할 때 server.properties 파일의 advertised.listeners 설정이 제대로 되어 있는지 확인합니다. 외부 클라이언트가 올바르게 접근할 수 있도록 인스턴스의 공인 IP를 사용해 설정해보세요. 예를 들면:

    advertised.listeners=PLAINTEXT://[YOUR_EC2_PUBLIC_IP]:9092
    
  4. Kafka 버전 호환성: Kafka 클라이언트(3.1.0)와 브로커(Kafka 2.x 이상 권장, 하지만 3.x 버전이 더 호환성이 좋음)의 버전 호환성을 확인해 보세요. 최신 버전에서 특정 기능이나 API가 변경되었을 수 있습니다.

  5. 브로커 로그 확인: 브로커에서 상세 로그가 기록되지 않는다면, 로그 레벨을 DEBUG로 설정하여 좀 더 세부적인 로그를 얻어보는 것도 도움이 될 수 있습니다. config/log4j.properties 파일을 수정하여 로그 레벨을 높여볼 수 있습니다.

위의 체크리스트를 기반으로 설정을 점검해 보시면 좋을 것 같습니다. 추가적으로 아래의 링크에서 비슷한 상황에 대한 토론을 참고하시면 도움이 될 수 있습니다.

자바 클라이언트 메세지 전송 테스트 실패

스프링 연결시 오류

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dpwns5239505's profile image
dpwns5239505

asked

Ask a question