[Kafka] Java Kafka Producer 튜토리얼

이재민·2024년 2월 18일
0

Kafka

목록 보기
14/17

Kafka SDK 목록

Apache Kafka는 공식적으로 Java 언어에 대한 SDK만 제공합니다.
Apache Kafka Clients

Kafka Client 라이브러리

Java

Official client library
Official Kafka Streams client library
Kafka for Spring Boot
Spring Cloud Stream



Java Kafka Programming

프로젝트 세팅

  1. 프로젝트 생성
  2. dependencies 설정

프로젝트 생성

익숙한 IDE를 이용해 프로젝트를 생성합니다.

dependencies 설정

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 만드는 방법

공식 문서를 참고하여 Producer에 필요한 속성 정보를 확인할 수 있습니다.
Kafka > Document > Configurations > Producer Configs

1. Producer 설정 생성

2. Kafka Producer 생성

3. Producer record 생성

kafka에 데이터를 전송하기 위해서는 ProducerRecord를 생성해야 합니다. Kafka에 메시지를 전송하기 위해서는 topic name, message value를 지정해야 합니다. key는 null로 보낼 수 있습니다.

4. Send data

producer는 데이터를 async 방식으로 전송합니다. 그러므로 flush, close 두개의 함수가 추가적으로 필요합니다.
flush.send()된 데이터를 강제로 전송하고, close()는 producer를 중지시킵니다.
위 함수가 동작하지 않는다면, 데이터가 전송되지 않을 수 있습니다.

5. Java Kafka Producer 실행

zookeeper, kafka를 실행시켜야 합니다.
이전 포스팅을 참고해주세요.

demo_java 토픽에 3개의 파티션 생성

kafka-topics.sh --bootstrap-server localhost:9092 --topic demo_java --create --partitions 3 --replication-factor 1

6. 메시지 관찰

  1. 위에서 만든 producer 애플리케이션을 관찰하기위해 consumer를 생성합니다.

    kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic demo_java
  2. prodcuer application 실행

    ProducerRecord로 생성한 메시지를 확인할 수 있습니다.
profile
문제 해결과 개선 과제를 수행하며 성장을 추구하는 것을 좋아합니다.

0개의 댓글