// 주문 서비스 gRPC API 예시
service OrderService {
rpc createOrder(CreateOrderRequest) returns (CreateORderReply) {}
rpc cancelOrder(CancelOrderRequest) returns (CancelORderReply) {}
rpc reviseOrder(ReviseOrderRequest) returns (ReviseOrderReply) {}
...
}
message CreateOrderRequest {
int64 restaurantId = 1;
int 64 consumerId = 2;
repeated LineItem lineItems = 3;
...
}
message LineItem {
string menuItemId = 1;
int32 quantity = 2;
...
}
...
넷플릭스 히스트릭스는 위와 같은 다양한 패턴이 구현된 오픈 소스 라이브러리이다. JVM 환경이라면 히스트릭스를 이용해 RPI 프록시를 구현해볼 수 있다.
MessageId
등을 활용하여 메시지를 식별한다.CorrelationId
가 포함된 응답 메시지를 지정된 응답 채널에 쓴다.CorrelationId
로 취합하여 요청을 맞추어 본다.메시지 브로커 | 점대점 채널 | 발행-구독 채널 |
---|---|---|
JMS | 큐 | 토픽 |
아파치 카프카 | 토픽 | 토픽 |
AMQP 브로커 (RabbitMQ) | 익스체인지 + 큐 | 팬아웃 익스체인지, 컨슈머 개별 큐 |
AWS 키네시스 | 스트림 | 스트림 |
AWS SQS | 큐 | - |
PENDING
상태로 생성ValidateConsumerInfo
메시지를 소비자 서비스에 전송ValidateOrderDetails
메시지를 음식점 서비스에 전송