카프카 조금 아는 척하기 (컨슈머)

컨슈머 그룹 내 컨슈머들은 하나의 파티션에 대해 하나의 컨슈머만 담당해야함

-> 복잡한 잠금(Locking) 매커니즘 없이도 각 컨슈머가 자신이 맡은 파티션에 대한 메시지를 처리할 수 있게 한다.

파티션의 개수보다 컨슈머가 많게 되면 컨슈머가 놀게됨

파티션 개수보다 컨슈머 개수가 적은 건 됨. 컨슈머가 두 개이상 파티션 담당하면 되니까

.fetch.min.bytes : poll 메서드로 요청하면 브로커가 해당 데이터만큼 쌓일 때까지 기다림

## 비유: 배달 앱의 '최소 주문 금액'과 '배달 시간' 🛵

  • fetch.min.bytes: 최소 주문 금액 (예: 15,000원). 이 금액을 채워야 배달이 시작됩니다.

  • fetch.max.wait.ms: 최대 배달 대기 시간 (예: 30분). 가게(브로커)는 주문(메시지)을 모으다가, 15,000원을 채우거나 또는 30분이 지나면 더 이상 기다리지 않고 무조건 출발합니다.

  • poll() 대기 시간: 배달을 기다리는 당신(컨슈머)이 배고픔을 참을 수 있는 최대 시간 (예: 40분).

만약 당신이 10분만 기다리기로(poll(10분)) 했는데, 가게는 최대 30분까지 기다렸다가 배달을 시작한다면, 당신은 음식을 받기 전에 이미 배고픔을 못 참고 다른 일을 하러 갈 것입니다. (비효율 발생)

따라서 poll()의 대기 시간은 fetch.max.wait.ms보다 항상 약간 더 길게 설정하는 것이 일반적이고 효율적입니다.

Last updated