[java] 카프카와 자바를 이용한 실시간 주문 처리

이번 포스트에서는 카프카와 자바를 사용하여 실시간 주문 처리 시스템을 구축하는 방법에 대해 알아보겠습니다.

1. 카프카란?

카프카는 분산 스트리밍 플랫폼으로서, 대용량의 데이터를 효율적으로 처리하기 위해 설계된 오픈소스 시스템입니다. 카프카는 메시지를 프로듀서로부터 컨슈머로 전달하는 방식으로 작동합니다.

2. 카프카 설치 및 설정

카프카를 사용하기 위해서는 먼저 카프카를 설치하고 설정해야합니다. 카프카의 설치는 공식 웹 사이트에서 다운로드 받을 수 있습니다. 설치 후, server.properties 파일을 편집하여 필요한 설정을 지정할 수 있습니다.

3. 자바로 카프카 사용하기

카프카를 자바로 사용하기 위해서는 먼저 카프카 클라이언트 라이브러리를 프로젝트에 추가해야합니다. 이를 위해 Maven이나 Gradle과 같은 의존성 관리 도구를 사용하는 것이 좋습니다.

dependencies {
    implementation 'org.apache.kafka:kafka-clients:2.7.0'
}

자바 코드에서 카프카를 사용하기 위해선 KafkaProducerKafkaConsumer를 사용해야합니다.

3.1. 주문 생성하기

Properties properties = new Properties();
properties.put("bootstrap.servers", "localhost:9092");
properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

Producer<String, String> producer = new KafkaProducer<>(properties);

String topic = "orders";
String key = "order-123";
String value = "New order received.";

ProducerRecord<String, String> record = new ProducerRecord<>(topic, key, value);
producer.send(record);

producer.close();

3.2. 주문 처리하기

Properties properties = new Properties();
properties.put("bootstrap.servers", "localhost:9092");
properties.put("group.id", "order-processor");
properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

Consumer<String, String> consumer = new KafkaConsumer<>(properties);
consumer.subscribe(Collections.singletonList("orders"));

while (true) {
    ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
    for (ConsumerRecord<String, String> record : records) {
        System.out.println("Received order: " + record.value());
        
        // 주문 처리 로직 수행
        
        consumer.commitSync();
    }
}

consumer.close();

위의 코드는 주문을 생성하고 처리하는 예제입니다. KafkaProducer를 사용하여 주문을 생성하고, KafkaConsumer를 사용하여 주문을 처리합니다. 주문 처리 로직은 사용자가 원하는 대로 구현하면 됩니다.

4. 마무리

이번 포스트에서는 카프카와 자바를 사용하여 실시간 주문 처리 시스템을 구축하는 방법에 대해 알아보았습니다. 카프카는 대용량의 데이터 처리에 우수한 성능을 보이며, 자바를 통해 쉽게 사용할 수 있습니다.

더 자세한 내용은 아파치 카프카 공식 문서를 참고하시기 바랍니다.

Happy coding!