confluent 카프카를 도커를 통해 설치 하였는데 m1 맥이라서 자주 다운되고 성능이 느려서 아파치 카프카 사이트에서 다운받아서 설치 해보도록 하였다.
$ bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
$ bin/kafka-server-start.sh -daemon config/server.properties
$ bin/kafka-topics.sh --create --topic exam --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1
$ bin/kafka-topics.sh --describe --topic exam --bootstrap-server localhost:9092
$ bin/kafka-console-producer.sh --topic exam --bootstrap-server localhost:9092
$ bin/kafka-console-consumer.sh --topic exam --from-beginning --bootstrap-server localhost:9092
exam1,2,3을 먼저 보낸뒤 Consumer 콘솔을 켜고 exam4를 보낸상황이다. 잘 보면 메시지의 순서가 보장이 안된것을 알 수 있다.
마찬가지로 spring 코드 실행시에도 순서가 다른것을 알 수 있다.
이유는 파티션을 3개 생성 했기 때문에 각 파티션에 메시지들이 무작위로 들어갔기 때문이다.
이 문제를 해결하기 위해 다음 번에는 스프링에서 메시지의 Key를 통해 파티션을 정해주어 순서가 보장받도록 해봐야겠다.