[java] 카프카에서 자바를 사용한 데이터 스트리밍 처리

카프카는 대용량 실시간 데이터 스트리밍을 처리하기 위한 분산 메시징 시스템입니다. 자바는 카프카와 함께 사용하기에 이상적인 언어입니다. 이 블로그 포스트에서는 카프카에서 자바를 사용하여 데이터 스트리밍 처리를 하는 방법에 대해 알아보겠습니다.

카프카 클라이언트 종속성 추가

먼저, 카프카를 사용하기 위해 프로젝트에 카프카 클라이언트 종속성을 추가해야 합니다. Maven을 사용한다면 pom.xml 파일에 다음과 같은 종속성을 추가하세요.

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>{카프카 버전}</version>
</dependency>

Gradle을 사용한다면 build.gradle 파일에 다음과 같은 종속성을 추가하세요.

implementation 'org.apache.kafka:kafka-clients:{카프카 버전}'

카프카 Consumer 작성하기

카프카 Consumer는 데이터를 수신하는 역할을 담당합니다. 자바로 카프카 Consumer를 작성하려면 다음과 같은 단계를 따르세요.

  1. 카프카 클라이언트를 생성합니다.
Properties props = new Properties();
props.put("bootstrap.servers", "{카프카 브로커 호스트:포트}");
props.put("group.id", "{소비자 그룹 ID}");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
  1. 구독할 토픽을 설정합니다.
consumer.subscribe(Collections.singletonList("{토픽 이름}"));
  1. 메시지를 수신하고 처리합니다.
while (true) {
    ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
    for (ConsumerRecord<String, String> record : records) {
        // 메시지 처리 로직 작성
        System.out.printf("Received message: key = %s, value = %s%n", record.key(), record.value());
    }
}

카프카 Producer 작성하기

카프카 Producer는 데이터를 생성하여 카프카로 전송하는 역할을 담당합니다. 자바로 카프카 Producer를 작성하려면 다음과 같은 단계를 따르세요.

  1. 카프카 클라이언트를 생성합니다.
Properties props = new Properties();
props.put("bootstrap.servers", "{카프카 브로커 호스트:포트}");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

KafkaProducer<String, String> producer = new KafkaProducer<>(props);
  1. 메시지를 생성하여 카프카로 전송합니다.
ProducerRecord<String, String> record = new ProducerRecord<>("{토픽 이름}", "key", "value");
producer.send(record);
  1. 전송이 완료될 때까지 대기합니다.
producer.flush();
  1. 카프카 클라이언트를 닫습니다.
producer.close();

결론

지금까지 카프카에서 자바를 사용하여 데이터 스트리밍 처리하는 방법에 대해 알아보았습니다. 자바를 활용해서 카프카를 사용하면 대용량 실시간 데이터를 간편하고 효과적으로 처리할 수 있습니다. 카프카와 자바를 함께 사용하여 데이터 스트리밍 애플리케이션을 개발해 보세요!

참고 자료