본문 바로가기
스프링부트

Spring에서 RabbitMQ를 사용하여 데이터를 받아보자

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

 

 

 

안녕하세요 오늘은 RabbitMQ를 사용하여 큐에 데이터를 넣고 빼는 작업을 해보겠습니다.

 

RabbitMQ 메시지 브로커(Message Broker)로서,

분산 시스템 간의 비동기적인 통신을 위해 사용됩니다.

 

 

1. 의존성 추가

 

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

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

 

메이븐:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

그래들:

implementation 'org.springframework.boot:spring-boot-starter-amqp'

 

 

 

2. RabbitMQ 연결 설정

 

Spring Boot 사용하는 경우,

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

 

application.yml

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

 

 

 

3. 메시지 수신 설정

 

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

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

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

 

@Component
public class MessageReceiver {

    @RabbitListener(queues = "myQueue")
    public void receiveMessage(String message) {
        // 수신된 메시지 처리 로직
        System.out.println("Received message: " + message);
    }
}

 

예시에서는 MessageReceiver 클래스에 @Component 어노테이션을 추가하여

Spring 컴포넌트 스캔 대상으로 만듭니다.

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

"myQueue"라는 RabbitMQ 큐에서 메시지를 받습니다.

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

 

 

 

4. 데이터 송신

 

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

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

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

 

@Service
public class MessageSender {

    private final RabbitTemplate rabbitTemplate;

    public MessageSender(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
    }

    public void sendMessage(String message) {
        rabbitTemplate.convertAndSend("myExchange", "myRoutingKey", message);
    }
}

 

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

sendMessage() 메소드에서는 rabbitTemplate.convertAndSend() 메소드를 사용하여

"myExchange" "myRoutingKey" 통해 메시지를 RabbitMQ 송신합니다.

 

 

 

5. 실행 결과 확인

 

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

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

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

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

 

또한 rabbitmq는 모니터링도 지원하여 localhost:15672 로 들어가시면 큐 상태를 확인할 수 있는

모니터링 페이지도 쓸 수 있습니다.

 

이러한 방식으로 Spring RabbitMQ 조합하여 비동기적인 통신을 구현할 있으며,

분산 시스템 간의 데이터 교환에 유용합니다.

 

 

참고 자료:

 

감사합니다.

 

 

 

728x90
반응형

댓글