Kafka send()가 반환되지 않는 구간 - max.block.ms 이해하기
·
Server
Kafka 프로듀서의 send()는 Future를 반환합니다. 비동기 API이므로 호출 스레드를 붙잡지 않는다고 알고 있었는데, 실제로는 수십 초 동안 반환되지 않는 경우가 있습니다.어느 구간에서 얼마나 붙잡히는지 확인하려고 테스트를 작성했고, 그 과정에서 잘못 알고 있던 것을 두 가지 확인했습니다. 실험은 개인 프로젝트에서 진행했고 브로커는 Testcontainers로 띄웠습니다. 테스트 코드는 글 마지막에 있습니다.1. send()는 예외를 던지지 않습니다2MB 레코드를 보내면 기본 한도(1MiB)를 초과하므로 예외가 발생할 것으로 보고 이렇게 작성했습니다.assertThatThrownBy(() -> producer.send(record)) .isInstanceOf(RecordTooLar..