메시지를 순서대로 consume하는 것이 보장됨.
topic에 대해 모든 데이터의 순서를 보장받고 싶다면, topic 생성 시 partition의 수를 1로 지정해야 함.
consumer는 1 3 2 순으로 메시지를 가져왔음.
consumer는 각각의 partition에서 첫 번째 데이터를 가져올 뿐, partition의 순서대로 가져오지 않는다.
같은 partition의 데이터의 순서는 보장됨. 따라서 2 5, 3 6의 순서는 consumer에서 보장 됨. 하지만 partiton 간의 순서는 보장되지 않음.
kafaka의 partition을 하나로 구성한다면, kafka의 강점인 확장성을 잃는다. 메시지 순서를 ㅂ증하는 구현 방안 중 하나로 해시에 의한 분할(partition에서)을 활용하는 방안을 고려할 수 있다. 이 방법은 전체 메시지 순서가 아닌, producer 및 장치 ID 등 카테고리별 순서 제어를 목표할 때 유용하다. 그러나 각종 구성 요소 장애를 고려한 완전 정렬은 난이도가 높다. 또한 consumer 구현이 producer 데이터 전송 로직에 강하게 의존하는 것은, kafka 전후의 시스템적인 분리에 제한을 줄 수 있다.
순서 보증을 위한 정렬 기능을 반드시 broker에서 구현할지(단일 파티션을 사용), consumer에서 구현하는 것이 더 나을지는 시스템 전체를 고려하여 판단해야 한다.