[java] Apache Kafka Streams와 함께 동작하는 자바 애플리케이션 개발 방법

Apache Kafka Streams는 대용량의 데이터 스트림을 처리하기 위한 분산처리 플랫폼입니다. 이를 활용하여 자바 애플리케이션을 개발할 수 있습니다. 이 글에서는 Apache Kafka Streams를 사용하여 자바 애플리케이션을 개발하는 방법에 대해 알아보겠습니다.

Apache Kafka Streams란?

Apache Kafka Streams는 Apache Kafka를 기반으로 작동하는 스트림 처리 라이브러리입니다. 이를 사용하여 데이터 스트림을 읽고 처리하며, 결과를 새로운 토픽에 기록할 수 있습니다. Kafka Streams는 내부적으로 상태 관리 및 시간 기반 윈도우 처리 등 다양한 기능을 제공하여 실시간 스트림 처리를 쉽게 구현할 수 있습니다.

자바 애플리케이션 개발하기

  1. Maven 프로젝트 생성하기

    mvn archetype:generate -DgroupId=com.example.myapp -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    

    Maven 프로젝트를 생성하고 groupId, artifactId 등을 설정합니다.

  2. Maven 의존성 추가하기

    <dependency>
      <groupId>org.apache.kafka</groupId>
      <artifactId>kafka-streams</artifactId>
      <version>{kafka_version}</version>
    </dependency>
    

    Maven 프로젝트의 pom.xml 파일에 Kafka Streams 의존성을 추가합니다. {kafka_version}은 사용하는 Kafka 버전에 따라 적절하게 변경되어야 합니다.

  3. Kafka Streams 애플리케이션 개발하기

    import org.apache.kafka.streams.*;
    import org.apache.kafka.streams.kstream.*;
    
    import java.util.Properties;
    
    public class KafkaStreamsApplication {
        public static void main(String[] args) {
            // Kafka Streams Config 설정
            Properties props = new Properties();
            props.put(StreamsConfig.APPLICATION_ID_CONFIG, "my-application");
            props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
    
            // Topology 빌더 생성
            StreamsBuilder builder = new StreamsBuilder();
    
            // Input Topic 만들기
            KStream<String, String> inputStream = builder.stream("input-topic");
    
            // 데이터 변환 및 처리 로직 추가
            KStream<String, String> outputStream = inputStream
                    .filter((key, value) -> value.contains("keyword"))
                    .mapValues(value -> value.toUpperCase());
    
            // Output Topic으로 결과 전송
            outputStream.to("output-topic", Produced.with(Serdes.String(), Serdes.String()));
    
            // Topology를 Kafka Streams에 등록하고 시작
            KafkaStreams streams = new KafkaStreams(builder.build(), props);
            streams.start();
        }
    }
    

    위의 코드는 Kafka Streams 애플리케이션을 개발하기 위한 기본적인 구조를 보여줍니다. StreamsConfig를 사용하여 애플리케이션의 설정을 정의하고, StreamsBuilder를 사용하여 처리 논리를 구성합니다. KStream을 통해 데이터를 읽고 변환하며, to() 메서드를 사용하여 결과를 출력 토픽에 전송합니다. 마지막으로 KafkaStreams를 시작하면 애플리케이션이 실행됩니다.

  4. 애플리케이션 빌드 및 실행하기

    mvn clean package
    java -jar target/myapp.jar
    

    Maven을 사용하여 애플리케이션을 빌드한 후, 생성된 JAR 파일을 실행하여 Kafka Streams 애플리케이션을 실행할 수 있습니다.

결론

이제 Apache Kafka Streams를 사용하여 자바 애플리케이션을 개발하는 방법에 대해 알아보았습니다. Kafka Streams를 활용하면 대용량의 데이터 스트림을 실시간으로 처리하고 분석하는 애플리케이션을 쉽게 개발할 수 있습니다. 자세한 내용은 Apache Kafka Streams 문서를 참고하시기 바랍니다.