2016-09-26 3 views
2

나는 다시 나에게 응답 난 내 ResponseHandler에에 응답을 얻을 수 있어요웹 서비스 통합 - 응답 클래스의 요청 Object에 액세스하는 방법?

<int:chain input-channel="balanceChannel" output-channel="processedItems"> 
 
\t \t <int-ws:outbound-gateway destination-provider="myDestinationProvider" /> 
 
\t </int:chain> 
 
<int:service-activator input-channel="processedItems" 
 
\t \t ref="responseHandler" method="handleResponse" output-channel="nativeQlChannel" />

을 반환 웹 서비스에 액세스하는 코드를 가지고 있지만, 나는 또한 요청 객체를 원하는 전 채널을 사용하여 웹 서비스로 보내시겠습니까? 어떻게 responseHandler에서 동일한 요청 객체에 액세스 할 수 있습니까?

답변

0

글쎄, 모든 스프링 통합 엔드 포인트가 채널을 통해 서로 분리되어 있기 때문에 마이크로 서비스로 간주 할 수 있습니다. 그리고 그것은 정말로 논리적이고 자연스럽고 다음 끝점은 이전의 끝점에 대한 입력을 전혀 알지 못합니다.

어쨌든 우리는 메시지 헤더가있는 요구 사항에 도달 할 수 있습니다. 그래서, 당신은 다운 스트림의 헤더에 요청 페이로드를 복사하고 그것에 대한 액세스를 얻을 :

<int:header-enricher> 
    <int:header name="request" expression="payload"/> 
</int:header-enricher> 

서비스 방법 handleResponse가 헤더에 액세스하려면 전체 Message<?>을 받아 들일 수 또는 단지와 함께 또 하나의 방법 PARAM를 추가 할 수 있습니다 @Header("request") 주석.

+0

감사합니다. @ artem-bilan, 내 문제를 해결합니다. 페이로드에 더 많은 값을 추가하여 웹 서비스 호출에 보내면 안된다는 것을 염두에 두어야합니까? 어떤 방법으로 어떤 변수를 추가 할 수 있습니까? –