AWS EC2 t2.xlarge
OS : Red Hat 9.1
Kafka :3.3.1
Scala : 2.13
bin/kafka-topics.sh --create --topic <test-topic> --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic
여기 입력한 메세지가 토픽에 post됨
/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic
왼쪽 producer 창에서 메세지를 입력하면
오른쪽 conspumer 창에 메세지가 출력된다.
consumer 그룹 지정하지 않으면 Unique한 컨슈머 그룹이 생성된다.
./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --group test-group
./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group test-group
컨슈머 그룹을 지정하지 않으면 유니크한 컨슈머 그룹이 생성된다(2번 참고)
프로듀서가 메세지를 보내면 모든 컨슈머가 동일하게 메세지를 받는다.
컨슈머 그룹으로 묶어주면 한 컨슈머만 메세지 받는다.
2번째 프로듀서가 메세지를 보내도 한 컨슈머만 메세지를 받는다.
-> first-topic 토픽에 파티션이 1개 이기때문에
파티션 1개는 컨슈머 그룹 내 1컨슈머와 매핑된다
-> 리소스 효율화위해 파티션 여러개로 설정한다.
./bin/kafka-topics.sh --list --bootstrap-server localhost:9092
./bin/kafka-topics.sh --create --topic topic-multi-partition --bootstrap-server localhost:9092 --partitions 2 --replication-factor 1
# producer
./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic topic-multi-partition
# consumer
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic-multi-partition --group my-newgroup
메세지 분배되어서간다.
캡쳐에서는, 대부분 1프로듀서 -> 1 컨슈머에게, 2프로듀서 ->2컨슈머에게 가는 것만 나왔데 2프로듀서 메세지가 1컨슈머에게도 간다