[RabbitMQ] Spring boot 기본 사용법
이번 글에서는 Spring boot에서 RabbitMQ를 사용하는 기본적인 방법에 대해 알아보겠습니다.
0. RabbitMQ 설치하기
먼저 아래 링크를 참고해 각자의 서버에 RabbitMQ 서버와 RabbitMQ-Management를 설치합니다. 저는 AWS EC2 서버에 Docker를 사용해 RabbitMQ를 설치했습니다.
✔ EC2에 Docker 설치법
https://hackernoon.com/running-docker-on-aws-ec2-83a14b780c56
✔ RabbitMQ Docker 설치법
https://psychoria.tistory.com/541
RabbitMQ Instance 작명규칙은 아래와 같습니다.
✔ Naming Rule
• lowercase
• Exchange : "x.[name]"
• Queue : "q.[name].[sub-name]"
RabbitMQ 서버를 설치하고난 뒤에는, https://start.spring.io/ 에서 Spring-boot Gradle 프로젝트를 다운받습니다. 다운받을 때 RabbitMQ 라이브러리를 선택해 Import 합니다.
메시지 생산자와 소비자 두개의 어플리케이션이 필요함으로 두개의 프로젝트를 생성합니다. (rabbitmq-producer / rabbitmq-consumer)
1. application.yml 수정하기
application.yml 파일에 위에서 설치한 RabbitMQ 서버의 config를 작성합니다.
각자 생성한 RabbtiMQ 서버의 정보를 입력하면 됩니다. Producer와 Consumer 둘다 입력해야 합니다.
spring:
rabbitmq:
host: [HOST]
port: [PORT]
username : [USERNAME]
password : [PASSWORD]
2. Producer 생성하기
먼저 메세지를 생산하는 Producer를 생성합니다.
RabbitmqProducer
@Service
public class RabbitmqProducer {
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendHello(String name){
rabbitTemplate.convertAndSend("q.minho", "Hello" + name);
}
}
RabbitmqProducerApplication
@SpringBootApplication
public class RabbitmqProducerApplication implements CommandLineRunner {
@Autowired
private RabbitmqProducer rabbitmqProducer;
public static void main(String[] args) {
SpringApplication.run(RabbitmqProducerApplication.class, args);
}
@Override
public void run(String... args) {
rabbitmqProducer.sendHello("minho");
}
}
앞서 생성한 Producer를 사용합니다. 어플리케이션은 CommandLineRunner를 implements하고 run 메서드를 Override 하면 됩니다.
RabbitmqProducerApplication을 실행하면 아래와 같이 "q.minho" Queue에 메세지가 생성되어 있습니다.
3. Consumer 생성하기
Producer가 생성한 메세지를 소비하는 Consumer를 생성합니다.
RabbitmqConsumer
@Service
public class RabbitmqConsumer {
@RabbitListener(queues = "q.minho")
public void listen(String message){
System.out.println("Consuming : " + message);
}
}
Spring Boot의 @RabbitListener 를 사용해 손쉽게 메세지를 Consume 할 수 있습니다. queues에는 target Queue를 입력합니다.
RabbitmqConsumerApplication
@SpringBootApplication
public class RabbitmqConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(RabbitmqConsumerApplication.class, args);
}
}
아무것도 입력하지 않아도 됩니다. 앞서 생성한 RabbitmqConsumer가 @Service로 등록되어있기 때문에, @RabbitListener에 등록한 Queue에 메세지가 생성될 때 마다 Real-time으로 메세지를 소비합니다.
RabbitmqConsumerApplication을 실행하면 아래와 같이 정상적으로 RabbitmqConsumer의 listen 메서드가 실행되었습니다.
참고 자료 : https://www.udemy.com/course/rabbitmq-java-spring-boot-for-system-integration/
'Spring Cloud > RabbitMQ' 카테고리의 다른 글
[RabbtiMQ] Exchange (Message broker) (0) | 2021.11.01 |
---|---|
[RabbitMQ] JSON Message Format 사용하기 - 2 (0) | 2021.11.01 |
[RabbitMQ] JSON Message Format 사용하기 - 1 (0) | 2021.11.01 |
[RabbitMQ] Scheduling 사용하기 (0) | 2021.11.01 |
[RabbitMQ] Message System을 사용하는 이유 (0) | 2021.11.01 |
[RabbitMQ] Multiple Consumer 사용하기 (0) | 2021.11.01 |
[RabbitMQ] Prefetch (0) | 2021.10.25 |
RabbitMQ - 레빗엠큐 개념 및 동작방식, 실습 (0) | 2021.04.24 |