brew install kafka
zookeeper-server-start /opt/homebrew/etc/kafka/zookeeper.properties
kafka-server-start /opt/homebrew/etc/kafka/server.properties
kafka-storage random-uuid # 새로운 uuid 생성
kafka-storage format -t <uuid> -c /opt/homebrew/etc/kafka/kraft/server.properties
kafka-server-start.sh /opt/homebrew/etc/kafka/kraft/server.properties
kafka-topics --bootstrap-server localhost:9092 (+)
## list
--list
## create
--topic first_topic --create
--topic second_topic --create --partitions 3
--topic third_topic --create --partitions 3 --replication-factor 2
--topic third_topic --create --partitions 3 --replication-factor 1
## describe
--topic first_topic --describe
## delete
--topic first_topic --delete
--bootstrap-server
: 연결하고자하는 부트스트랩 서버--topic
: 메시지가 저장된 topic--producer-property
acks=0/1/all
: acks 값 설정--property parse.key=true
--property key.separator=:
: key와 value의 구분자를 : 사용kafka-console-producer --bootstrap-server localhost:9092 (+)
--topic first_topic
--topic first_topic --producer-property acks=all
--topic first_topic --property parse.key=true --property key.separator=:
--from-beginning
: consumer의 실행 시점에 관계없이 해당 토픽의 첫 메시지부터 소비--formatter
: 포맷 지정--property
print.timestamp=true
: message를 받은 시간 표시print.key=true
: key 출력print.value=true
: value 출력print.partition=true
: Partition number 출력kafka-console-consumer --bootstrap-server localhost:9092 (+)
--topic second_topic
--topic second_topic --from-beginning
--topic second_topic --formatter kafka.tools.DefaultMessageFormatter --property print.timestamp=true --property print.key=true --property print.value=true --property print.partition=true --from-beginning
offsets.retention.minutes
로 설정된 시간만큼 지속되면 topic에 저장되어 있던 offset이 날라간다.kafka-console-consumer --bootstrap-server localhost:9092 (+)
--topic third_topic --group my-first-application
--topic third_topic --group my-first-application
--topic third_topic --group my-second-application --from-beginning
--describe
: consumer group의 정보를 알 수 있음kafka-consumer-groups --bootstrap-server localhost:9092 (+)
--describe --group my-second-application
--reset-offsets
: offset을 재설정
to-earliest
: offset을 0으로 초기화--dry-run
: 시험적으로 실행해봄. 결과에는 반영되지않음
--execute
: 실제로 실행함
offset을 재설정하기 위해서는 consumer group이 inactive한 상태여야함
--dry-run
/--execute
두 옵션 모두 주지 않으면 --dry-run
--dry-run
이 실행되지 않고 --execute
할 건지 사용자에게 물어보는 형태로 변경될 예정kafka-consumer-groups --bootstrap-server localhost:9092 (+)
--group my-second-application --reset-offsets to-earliest --topic second_topic --execute