작성
·
45
0
안녕하세요
뒷 강의에서 뭔가 말씀해주실것같긴한데
성급해서 먼저 질문드립니다.
동기, 비동기 발송 시 설정한 ack 모드(1 혹은 -1)에 따라
Exception이 발생하면 send thread에서 재전송을 한다고 말씀해주셨는데요
강의 중 작성해주신 아래 코드에서
else부분에서 error 처리(캐치)부분을 넣는것과 별개로
재전송은 따로 이루어진다 라고 이해하면될까요?
// KafkaProducer message send
kafkaProducer.send(producerRecord, (metadata, exception) -> {
if(exception == null) {
// 로그출력부분
} else {
// 에러 처리부분
logger.error("exception error from broker" + exception.getMessage());
}
});
답변 2
0
안녕하십니까,
네, 맞습니다.
try catch로 error를 잡는 것과 별개로 메시지 재 전송은 producer가 내부적으로 수행하는 것이기 때문에 사용자 코드에 작성해서는 안됩니다. producer는 전송 오류 발생 시 설정값으로 정해진 재시도 횟수만큼 지속적으로 시도하다가, 재 시도 횟수가 넘어갈 경우 exception을 사용자 코드로 넘겨 주게 됩니다.
다음 섹션의 Producer의 전송/재전송 내부 메커니즘 및 재 전송 동작 관련 주요 파라미터의 이해와Producer의 재전송 관련 주요 파라미터 설정에 따른 동작 실습 영상에서 보다 자세히 말씀드리오니 참고하시면 도움이 될 것 입니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 코딩의신님께서 질문하신 내용은 Kafka에서의 비동기 메시지 전송과 관련된 사항입니다. 카프카 프로듀서를 사용할 때, 메시지를 전송하면 콜백(callback)을 통해 전송 결과를 처리할 수 있습니다. 질문하신 코드에서 콜백의 exception
부분은 메시지 전송 중 발생한 에러를 처리하는 부분입니다.
코드에서 exception
이 발생했을 때, 재전송이 필요하다면 별도로 재전송 로직을 작성해야 합니다. 카프카 프로듀서의 retries
설정을 통해 자동으로 재시도할 수 있지만, 수동으로 재전송 로직을 추가하면 더 많은 제어권을 가질 수 있습니다. 예를 들어, 특정 타입의 에러에 대해서만 재전송할지, 재전송을 몇 번 할지를 결정할 수 있습니다.
다음은 관련된 질문과 답변들이 있는 게시물들입니다:
이 게시글에서는 카프카 컨슈머와 관련하여 데이터를 안전하게 처리하기 위한 여러 방법에 대해서 다루고 있으며, 프로듀서에서의 재시도 로직에 대해서 간략하게 언급되어 있습니다.
이 질문에서는 Kafka의 at-least-once 메시지 전송 보장 메커니즘에 대해 다루며, 재전송 설정에 관련된 정보를 얻을 수 있습니다.
해당 게시물에서는 Kafka Producer의 Send 메소드에서 스레드별 예외 처리가 어떻게 가능한지에 대한 질문과 답변이 포함되어 있습니다.
위 내용들이 코딩의신님께서 이해도를 높이는데 도움이 되시기를 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.