apache kafka
- apache Kafka 공식 라이브러리.
- Kafka 클라이언트를 제공하여 Kafka 브로커와 직접 통신하도록 지원.
spring kafka
- Spring Framework의 Kafka 통합 라이브러리.
- org.apache.kafka를 기반으로 하고 있으며, Spring 애플리케이션에 친화적인 기능을 추가.
spring boot에서 apache kafka를 조금 더 편리하게 사용할 수 있도록 한 라이브러리가 spring kafka이다.
예시
apache kafka(저수준 API)
- producer.close()를 명시적으로 호출해야 자원을 적절히 해제할 수 있음.
- Spring과의 통합 기능이 없어 별도로 관리해야 함.
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.util.Properties;
public class ApacheKafkaExample {
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);
try {
producer.send(new ProducerRecord<>("my-topic", "key", "Hello Apache Kafka!"));
} finally {
producer.close(); // 명시적으로 자원 해제 필요
}
}
}
Spring Kafka (고수준 API)
- KafkaTemplate을 사용해 간단한 코드로 메시지 전송 가능.
- Spring 컨텍스트가 Bean 생명주기를 관리하므로 자원 해제 관리 필요 없음.
- 설정도 application.yml로 간단히 관리 가능
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;
@Component
public class SpringKafkaProducer {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
public void sendMessage(String topic, String message) {
kafkaTemplate.send(topic, message); // 간단한 메시지 전송
}
}
spring:
kafka:
bootstrap-servers: localhost:9092
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
'Kafka' 카테고리의 다른 글
RabbitMQ와 Kafka (0) | 2024.12.10 |
---|