[java] 자바로 카프카에 데이터를 전송하는 고성능 프로듀서 작성하기

카프카(Kafka)는 대용량의 실시간 데이터 스트림 처리를 위한 분산 스트리밍 플랫폼입니다. 자바를 사용하여 카프카에 데이터를 전송하기 위해 고성능 프로듀서를 작성하는 방법에 대해 알아보겠습니다.

1. Kafka 클라이언트 의존성 추가하기

먼저, Maven or Gradle을 사용하여 Kafka 클라이언트 의존성을 프로젝트에 추가해야 합니다. 아래의 의존성 추가 방법은 Maven을 사용하는 예시입니다.

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.8.0</version>
</dependency>

2. 프로듀서 코드 작성하기

아래의 코드 예시는 Kafka 프로듀서를 생성하고 메시지를 전송하는 간단한 예시입니다.

import org.apache.kafka.clients.producer.*;

import java.util.Properties;

public class KafkaProducerExample {

    public static void main(String[] args) {
        // Kafka Producer 설정
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        // Kafka Producer 생성
        Producer<String, String> producer = new KafkaProducer<>(props);

        // 전송할 메시지 생성
        String topic = "my-topic";
        String key = "my-key";
        String value = "Hello, Kafka!";

        // 메시지 생성 후 전송
        ProducerRecord<String, String> record = new ProducerRecord<>(topic, key, value);
        producer.send(record, new Callback() {
            @Override
            public void onCompletion(RecordMetadata metadata, Exception exception) {
                if (exception != null) {
                    exception.printStackTrace();
                } else {
                    System.out.println("메시지 전송 성공 - Offset: " + metadata.offset());
                }
            }
        });

        // Kafka Producer 종료
        producer.close();
    }
}

위 코드에서 bootstrap.servers는 Kafka 브로커의 호스트와 포트를 설정하는 부분입니다. key.serializervalue.serializer는 메시지의 키와 값을 직렬화하는 방식을 설정하는 부분입니다. 예시에서는 문자열 직렬화를 사용하였습니다.

3. 프로듀서 실행하기

프로듀서 코드를 작성한 후, 해당 코드를 실행하면 Kafka에 메시지가 전송됩니다. 프로듀서는 메시지 전송 후에 반드시 close() 메서드를 호출하여 리소스를 정리해야 합니다.

$ java KafkaProducerExample

결론

이제 자바로 카프카에 데이터를 전송하는 고성능 프로듀서를 작성하는 방법을 알아보았습니다. 카프카를 사용하여 대규모 데이터를 실시간으로 처리하고 분석하는 환경에서 유용하게 활용할 수 있습니다.

참고 문서