2017-05-17 18 views
1

웹 요청을 다른 서비스로 '리디렉션'하고 싶습니다. 나는 그들에 대해 아무것도 바꾸지 않고 다른 서비스 (http-clj와 같은 것으로 가정)로 보내고 싶다. 그 결과 동일한 홉을 수행합니다.반지 요청에서 새 HTTP 호출 만들기

우리가 서비스의 일부를 대체하기 때문에 필요하지만 우리는 직접 클라이언트 호출 서비스를 가질 수 없습니다.

우리는 바람둥이에 배치하지만 일반적으로 모든 링 요청에 사용할 수 있습니다.

우아한 방법이 있나요?

감사

답변

3

이것은 링 별 대답하지 않습니다,하지만 난 당신이 모두 기존의 웹 서비스와 새로운 앞에 Nginx에같은 역방향 프록시를 사용하여 더 나을 것 느낌 대체 웹 서비스.

역방향 프록시는 다른 들어오는 URL에 쉽게 응답 할 수 있으며, 뒤에서 올바른 웹 서비스로 투명하게 전달할 수 있습니다. 이것은 서비스가 증가함에 따라 많은 분할 된 URL 스키마 변형을 허용하는 유연하고 강력한 접근 방식입니다.

0

저는 요청이 들어오는 곳이 두 곳으로 갈 필요가있을 때 이것을 해왔습니다. (마이크로 서비스와 여기에 의도하지 않은 결과의 법칙에 대한 대기열) 나는 일반적으로 http-kit와 함께 core.async를 사용하는 패턴을 정했다.

(handler ..... 
    (let [output (chan)] 
     (http/post bakcend-url (make-new-request-options request) 
       #(do (async/>!! output %) 
         (async/close! output))) 
     (go (async/<! (async/timeout 2000)) 
      (async/>! output {:status 500})) 
    ...)