옛날엔 round-robin 방식을 사용했기에 producer로 작성한 메시지들이 여러 partition에 걸쳐 spread되었다.
요즘엔 sticky partitioner 방식을 사용한다고 한다.

partition 개수는 3개야. kafka producer를 통해 3개의 메시지를 입력했어. comsumer로 메시지들을 읽어보니 쓴 순서대로 나오더라고. 파티션 폴더들을 직접 뒤져보니, 2번 파티션 안에만 메시지들이 기록돼있어. 근데 강사님의 폴더를 보면 세 메시지가 각각 다른 파티션에 저장돼 있어. 나의 경우는 왜 한 파티션 안에만 저장된 거야?
가능한 원인은 거의 “파티션을 고르는 기준(=파티셔너 동작)” 차이야. Kafka는 메시지를 보낼 때마다 3개 파티션에 자동으로 골고루 넣는 게 기본 보장사항이 아니고, 아래 규칙으로 “어느 파티션에 쓸지”를 결정해.
프로듀서가 key를 함께 보냈으면(예: userId, concertId 같은 값), Kafka는 기본 파티셔너가 key 해시로 파티션을 고정해.
✅ 확인 포인트
--property parse.key=true --property key.separator=: 같은 옵션 썼는지ProducerRecord(topic, key, value) 형태로 key 넣고 있는지KafkaTemplate.send(topic, key, value) 쓰는지요즘 Kafka 클라이언트(특히 2.4+ 이후 기본 파티셔너)는 키가 없을 때 round-robin이 아니라 “sticky” 방식이 기본이야.
Sticky partitioner 요약
즉, 네가 3개를 짧은 시간에 연달아 보냈다면:
반면 강사님은
Kafka는 파티션 내부 순서만 보장해.
너는 3개가 같은 파티션(2번) 으로 갔으니 소비 시에도 쓴 순서대로 나오는 게 당연해.
강사님처럼 각 메시지가 다른 파티션이면,
가장 빠른 체크:
--property print.partition=true --property print.key=true --property print.offset=true 류 옵션(환경마다 다름)으로 확인record.partition() 출력원하면, 네가 메시지 넣은 방식(콘솔 명령어 / Python 코드 / Spring 코드) 그대로 붙여줘. 그걸 기준으로 “key를 주고 있는지”, “sticky 동작인지”, “왜 2번으로 고정됐는지”를 정확히 짚어서 재현 가능한 형태로 설명해줄게.