
메시지 큐는 생산자(Producer)가 보낸 메시지를 중간 브로커(Queue)가 보관하고, 소비자(Consumer)가 이를 꺼내 처리하는 비동기 통신 방식을 제공하는 시스템이다.
이를 통해 서비스 간 결합도를 낮추고, 비동기 방식으로 확장성과 성능을 높일 수 있다.
// Producer (메시지 전송)
@RestController
@RequestMapping("/api")
public class MessageProducer {
private final RabbitTemplate rabbitTemplate;
public MessageProducer(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
@PostMapping("/send")
public String sendMessage(@RequestParam String message) {
rabbitTemplate.convertAndSend("myQueue", message);
return "Message sent!";
}
}
// Consumer (메시지 소비)
@Component
public class MessageConsumer {
@RabbitListener(queues = "myQueue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
메시지 큐는 MSA 환경에서 서비스 간 결합도를 줄이고, 확장성과 성능을 높이는 핵심 요소이며 비동기 처리, 장애 복구, 트래픽 관리 등 다양한 이점을 제공한다.
📌 요약
- 메시지 큐는 MSA의 서비스 간 비동기 통신을 담당
- RabbitMQ(AMQP), Kafka(스트리밍), Redis(Pub/Sub) 등 다양한 메시지 브로커가 존재
- 주요 활용 사례: 이메일 인증, 로그 스트리밍, 주문 처리 시스템 등