[RabbitMQ] Request / Reply with Spring Boot
- RabbitMQ
- 2020. 8. 27.
이번 글에서는 Spring Boot를 사용한 Message Reqeust/Reply에 대해 알아보도록 하겠습니다.
1. Request/Reply
Request는 message 처리 요청을 의미합니다. Reply는 메세지 처리후의 응답이라고 생각할 수 있습니다.
기본적으로 Consumer는 RabbitMQ로 부터 메세지 처리 요청(Request)이 오면 적절한 프로세스를 통해 메세지를 처리하는 과정을 거치게 됩니다. 처리과정을 거친뒤에는 해당 Consumer에서 아래 그림처럼 다른 서비스의 API를 호출해 또다른 프로세스를 진행할 수 있습니다.
아니면 아래 그림처럼 또다른 메세지를 생성해 적절한 Exchnage로 메세지를 전달 할 수 있습니다.
만약 위처럼 메시지를 또다른 exchnage에 전달하려고하면 rabbittemplate을 사용해 메시지를 publish하는 방법을 생각할 수 있습니다. 하지만, 이러한 request/reply 과정은 반복적이며 일반적인 과정이기 때문에 Spring 자체적으로 간단하게 구현할 수 있는 방법을 제공하고 있습니다.
구현방법은 아래와 같습니다.
@RabbitHandler
@SendTo("exchange/routingkey")
public ReturnMessageType handleInvoiceCreated(InvoiceCreatedMessage message){
log.info("invoice created : {} ", message);
return new ReturnMessageType();
}
소스를 해석해보면 메세지 Request를 처리하는 메서드위에 @SendTo 어노테이션을 통해 Reply할 exchange와 routingkey를 명시해줍니다. 또한 기존의 void Type이였던 return 타입을 새롭게 전달할 메시지의 타입으로 변경합니다. 마지막으로 메서드의 return 값으로 전달할 메시지 object를 사용하면 되겠습니다.
참고 자료 : https://www.udemy.com/course/rabbitmq-java-spring-boot-for-system-integration/
추천서적
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
'RabbitMQ' 카테고리의 다른 글
[RabbitMQ] Message Order & Multiple Message Type (0) | 2020.08.27 |
---|---|
[RabbitMQ] Prefetch (0) | 2020.08.27 |
[RabbitMQ] Scheduling Consumer ON/OFF (0) | 2020.08.27 |
[RabbitMQ] Jackson2JsonMessageConvertor (0) | 2020.08.27 |
[RabbitMQ] RabbitMQ Structure 생성하기 (0) | 2020.08.27 |