Apache Kafka는 공식적으로 Java 언어에 대한 SDK만 제공합니다.
Apache Kafka Clients
Official client library
Official Kafka Streams client library
Kafka for Spring Boot
Spring Cloud Stream
익숙한 IDE를 이용해 프로젝트를 생성합니다.
dependencies {
// https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients
implementation 'org.apache.kafka:kafka-clients:3.0.0'
// https://mvnrepository.com/artifact/org.slf4j/slf4j-api
implementation 'org.slf4j:slf4j-api:1.7.32'
// https://mvnrepository.com/artifact/org.slf4j/slf4j-simple
implementation 'org.slf4j:slf4j-simple:1.7.32'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}
공식 문서를 참고하여 Producer에 필요한 속성 정보를 확인할 수 있습니다.
Kafka > Document > Configurations > Producer Configs
kafka에 데이터를 전송하기 위해서는 ProducerRecord
를 생성해야 합니다. Kafka에 메시지를 전송하기 위해서는 topic name, message value
를 지정해야 합니다. key는 null
로 보낼 수 있습니다.
producer는 데이터를 async 방식으로 전송합니다. 그러므로 flush, close
두개의 함수가 추가적으로 필요합니다.
flush
는 .send()
된 데이터를 강제로 전송하고, close()
는 producer를 중지시킵니다.
위 함수가 동작하지 않는다면, 데이터가 전송되지 않을 수 있습니다.
zookeeper, kafka를 실행시켜야 합니다.
이전 포스팅을 참고해주세요.
demo_java 토픽에 3개의 파티션 생성
kafka-topics.sh --bootstrap-server localhost:9092 --topic demo_java --create --partitions 3 --replication-factor 1
위에서 만든 producer 애플리케이션을 관찰하기위해 consumer를 생성합니다.
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic demo_java
prodcuer application 실행
ProducerRecord로 생성한 메시지를 확인할 수 있습니다.