728x90
org.apache.kafka:kafka_2.13와 org.springframework.kafka:spring-kafka 두 가지 의존성은 각각 Apache Kafka와 Spring Kafka 라이브러리를 제공합니다. 이 둘은 서로 다른 목적을 가지고 있으며, 주로 Kafka를 사용할 때 함께 사용되지만, 서로 다른 역할을 수행합니다.
org.apache.kafka:kafka_2.13
이 의존성은 Apache Kafka 클라이언트를 제공합니다. Kafka 클라이언트는 Kafka 브로커와 상호작용하기 위한 기본적인 라이브러리입니다. 이를 통해 프로듀서와 컨슈머를 직접 구현할 수 있습니다. 2.13 부분은 Scala 버전과 관련이 있으며, Kafka가 Scala로 작성되었기 때문에 필요합니다.
주요 기능:
- Kafka 브로커와 직접 통신
- 메시지 프로듀서 및 컨슈머 구현
- Kafka 주제 및 파티션 관리
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.util.Properties;
public class SimpleProducer {
public static void main(String[] args) {
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");
KafkaProducer<String, String> producer = new KafkaProducer<>(props);
producer.send(new ProducerRecord<>("my-topic", "key", "value"));
producer.close();
}
}
org.springframework.kafka:spring-kafka
이 의존성은 Spring Framework에서 Kafka를 쉽게 사용할 수 있도록 도와주는 라이브러리입니다. Spring Kafka는 Spring의 모든 이점을 Kafka와 통합하여 제공합니다. 이를 통해 Kafka와의 상호작용을 단순화하고, 설정 및 관리를 쉽게 할 수 있습니다.
주요 기능:
- Spring의 의존성 주입과 함께 Kafka 사용
- Kafka 리스너 컨테이너를 사용하여 자동 메시지 소비
- Spring의 설정 및 설정 파일을 사용하여 간편한 Kafka 설정
- Kafka 트랜잭션 관리
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;
@Service
public class KafkaConsumerService {
@KafkaListener(topics = "my-topic", groupId = "my-group")
public void listen(String message) {
System.out.println("Received message: " + message);
}
}
차이점 요약
- org.apache.kafka:kafka_2.13: 저수준의 Kafka 클라이언트 라이브러리로, Kafka 브로커와 직접 상호작용하기 위한 기능을 제공합니다. 직접 프로듀서와 컨슈머를 구현해야 합니다.
- org.springframework.kafka:spring-kafka: Spring Framework와 통합된 Kafka 라이브러리로, Spring의 다양한 기능과 Kafka를 결합하여 사용하기 쉽게 만들어줍니다. Spring의 의존성 주입, 설정 파일 등을 사용하여 Kafka 설정과 관리를 단순화합니다.
대부분의 Spring 애플리케이션에서는 spring-kafka를 사용하여 Kafka와의 상호작용을 간편하게 구현하는 것이 일반적입니다. Apache Kafka 클라이언트 라이브러리는 spring-kafka가 내부적으로 사용하고 있으므로, 직접 사용할 필요는 없습니다.