RabbitMQ를 통한 **request/reply(RPC)**는 메시징을 사용해 동기 스타일의 request-response 통신을 가능하게 합니다 — client가 요청을 보내고 reply queue를 통해 응답을 받으며, correlation ID를 사용해 응답을 요청에 매칭합니다. 서비스 간 호출에 유용한 패턴입니다.
RabbitMQ에서 RPC 동작 방식
메시징을 통한 RPC 패턴:
1. CLIENT가 REQUEST 메시지를 보냄, 다음을 포함:
→ REPLY-TO queue (응답이 가야 할 곳)
→ CORRELATION ID (응답을 이 요청에 매칭하는 고유 ID)
2. SERVER (consumer)가 요청을 처리하고 RESPONSE를 reply-to queue로 보냄,
같은 CORRELATION ID 포함
3. CLIENT가 reply queue에서 응답을 받고, CORRELATION ID로 매칭 →
응답을 원래 요청과 짝지음
→ 비동기 메시징을 통한 request-response
correlation ID가 중요한 이유
→ client가 하나의 reply queue에 많은 미결 요청을 가질 수 있음 → 응답이 섞여서 도착
→ CORRELATION ID가 각 응답을 그 요청에 매칭 (어떤 응답이 어떤 호출에 대한 것인지)
→ 없으면 client는 어떤 응답이 어떤 요청에 답하는지 알 수 없음
