본문 바로가기
스프링부트

Spring에서 카프카(Kafka)를 사용하여 데이터를 받아보자

by 플라퉁 2023. 10. 14.
728x90
반응형

 

 

 

안녕하세요 오늘은 카프카(Kafka)를 사용하여  데이터를 교환하는 작업을 해보겠습니다.

 

 

카프카(Kafka) 분산 스트리밍 플랫폼으로,

대용량의 실시간 데이터 스트림을 처리하기 위해 사용됩니다.

 

 

1. 의존성 추가

 

먼저, 프로젝트의 의존성 관리 파일(: pom.xml 또는 build.gradle)

Kafka 관련 의존성을 추가해야 합니다.

 

메이븐:

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

그래들:

implementation 'org.springframework.kafka:spring-kafka'

 

 

 

2. Kafka 연결 설정

 

Spring Boot 사용하는 경우,

application.properties 또는 application.yml 파일에 Kafka 연결 설정을 추가합니다.

 

application.yml

spring:
  kafka:
    bootstrap-servers: localhost:9092
    consumer:
      group-id: my-consumer-group

 

 

 

3. 메시지 수신 설정

 

 

Spring에서 Kafka로부터 메시지를 수신하려면

@KafkaListener 어노테이션을 사용하여 메소드를 구성해야 합니다.

어노테이션은 Kafka 토픽(Topic)에서 메시지를 받을 있는 리스너 역할을 합니다.

 

@Component
public class MessageReceiver {

    @KafkaListener(topics = "my-topic")
    public void receiveMessage(String message) {
        // 수신된 메시지 처리 로직
        System.out.println("Received message: " + message);
    }
}

 

예시에서는 MessageReceiver 클래스에

@Component 어노테이션을 추가하여 Spring 컴포넌트 스캔 대상으로 만듭니다.

그리고 receiveMessage() 메소드에 @KafkaListener 어노테이션을 적용하여

"my-topic"이라는 Kafka 토픽에서 메시지를 받습니다.

, 매개변수로 전달되는 문자열은 수신된 메시지입니다.

 

 

 

4. 데이터 송신

 

이번에는 토픽에 메시지를 넣어 봅시다.

데이터를 송신하기 위해서는 KafkaTemplate 클래스를 사용합니다.

KafkaTemplate Kafka와의 상호작용을 단순화한 API입니다.

 

@Service
public class MessageSender {

    private final KafkaTemplate<String, String> kafkaTemplate;

    public MessageSender(KafkaTemplate<String, String> kafkaTemplate) {
        this.kafkaTemplate = kafkaTemplate;
    }

    public void sendMessage(String message) {
        kafkaTemplate.send("my-topic", message);
    }
}

 

예시에서는 MessageSender 클래스에 KafkaTemplate 주입받아서 사용합니다.

sendMessage() 메소드에서는 kafkaTemplate.send() 메소드를 사용하여

"my-topic"이라는 Kafka 토픽으로 메시지를 송신합니다.

 

 

 

5. 실행  결과 확인

 

위의 설정과 코드가 준비되었다면,

애플리케이션을 실행하고 Kafka로부터 수신된 데이터를 확인할 있습니다.

메시지 수신은 애플리케이션 실행 자동으로 시작되며,

Kafka 토픽에 도착한 메시지가 있으면 해당 리스너가 작동하여 메시지를 처리합니다.

 

이러한 방식으로 Spring 카프카를 조합하여

실시간 스트리밍 데이터 처리와 이벤트 기반 아키텍처 구현에 사용할 수 있습니다.

 

 

참고 자료:

 

감사합니다.

 

 

 

728x90
반응형

댓글