2016-05-31 2 views
2

재시도 조건으로 http 아웃 바운드 게이트웨이 호출을 만들고 싶습니다. 아웃 바운드 게이트웨이는 내가 반환 한 나머지 API가 ERROR 또는 COMPLETE를 반환 할 때까지 다시 시도합니다.HTTP 아웃 바운드 조건으로 재 시도 (검사기 조건의 경우)

내가 뭘 할 수 있습니다 :

<int-http:outbound-gateway request-channel="checkJobChannel" 
          url="http://host/rest/job-status" 
          http-method="GET" 
          extract-request-payload="true" 
          expected-response-type="java.lang.String" 
          reply-timeout="10000" 
          reply-channel="checkJobChannel.reply" 
          auto-startup="true" 
          transfer-cookies="true"> 

다음 라우터

@Router(inputChannel = "checkJobChannel.reply",applySequence = "true") 
public String pointJob(Message<?>reply) { 
    String returnChannel =""; 
    if(reply.getPayload().get("status").equals("RUNNING")){ 
     returnChannel="checkJobChannel"; 
    }else if(reply.getPayload().get("status").equals("COMPLETE")|reply.getPayload().get("status").equals("ERROR")){ 
     returnChannel="nextChannel"; 
    } 
return returnChannel; 
} 

내가 그렇게 할 수 있습니까? 감사. 그것을 달성하기위한 간단한 방법은 무엇입니까?

답변

1

그게 좋은 것 같습니다. 해당 REST 서비스에서 예외가 없으면 라우터를 사용한 간단한 접근 방식이 나에게 잘 어울립니다.

로직을 분리하기 위해 <int-http:outbound-gateway>에 넣을 수있는 RequestHandlerRetryAdvice이 있다는 것에주의를 기울여야합니다.

또한 RequestHandlerCircuitBreakerAdvice 일부 조건에 따라 REST 서비스를 호출하지 않기 때문에 계정을 사용할 수 있습니다.

하지만 예외가 없으므로 이러한 패턴의 요구 사항에 "스트럿츠"가 필요합니다.

자세한 내용은 Reference Manual에서 확인할 수 있습니다.

+0

좋아, Artem, 그걸 구현하려고합니다. 감사 – Harji

관련 문제