2017-12-02 19 views
0

으로 통신하는 방법 REST Microservice가 하이브리드 인 다른 Microservice와 통신 할 수있는 방법은 REST 및 Message Queue와 통신 할 수 있다는 것을 의미합니다. 예를 들면 API 게이트웨이. 외부 세계를 위해 그는 REST를 통해 App, Mobilephone과 통신 할 수 있지만 백엔드의 통신은 메시지 대기열을 통해 이루어집니다.REST에서 메시지 대기열

사용 사례 :

내 홈페이지는 데이터베이스에서 차량을 얻으려고합니다. 그는 GET-Request를 통해 API-Gateway에 요청합니다. API-Gateway는 GET 요청을 가져 와서 메시지 큐에 게시합니다. 다른 Microservice는 메시지를 가져 와서 결과를 게시합니다. 그런 다음 API 게이트웨이는 결과를 사용하여 응답으로 다시 전송합니다.

어떻게 구현할 수 있습니까? 아파치 카프카에서 스프링 부트를 사용하고 있습니까? 비동기 통신을 구현해야합니까? (죄송의 독일어)

enter image description here

+0

난 당신이 휴식 컨트롤러에서 비동기 응답/시간 초과 기다려야 할 것 같아요. –

답변

1

이 상황을 해결하기 위해 몇 가지 방법이 있습니다.

각 클라이언트 요청에 대한 주제를 만들고 다른 쪽에서 답장을 기다릴 수도 있습니다. 예를 들어 DriverService는 요청 메시지를 읽고 모든 데이터를 가져 와서 클라이언트 요청 주제에 게시합니다. 응답 메시지를 사용하자 마자 그 주제를 파괴합니다.

요청 - 응답 상호 작용에서 '임시'항목이 삭제되기까지 시간이 너무 오래 걸릴 수 있습니다 (구성에서 delete.topic.enable 속성을 피할 수없는 경우). 가능한 주제가 지나치게 커지면 모니터링해야합니다.

Websocket은 다른 가능한 솔루션입니다. 클라이언트는 이전에 서버와 합의한 특정 주제를 듣기 시작하고 특정 시간 초과시 DriverService가 특정 소켓 채널에 게시 할 때 응답을 기다리게됩니다.

스프링 부트는 카프카와 웹 소켓을위한 훌륭한 스타터입니다. 많은 양의 거래가 예상된다면 카프카를 사용하여 백엔드 규모를 도모하고 모든 거래를 처리하는 혼합 전략을 수립 한 다음 Websocket을 통해 고객에게 응답합니다.