더 우아한 솔루션은 <request-handler-advice-chain>
및 Spring Cache Advice으로 얻을 수 있습니다.
그래서, 솔루션은 다음과 같이 할 수있다 : handle*Message
이 HttpRequestExecutingMessageHandler
의 handleRequestMessage
방법이다
<int-http:outbound-gateway>
<int-http:request-handler-advice-chain>
<cache:advice>
<cache:caching cache="foo">
<cache:cacheable method="handle*Message" key="#a0.payload"/>
</cache:caching>
</cache:advice>
</int-http:request-handler-advice-chain>
</int-http:outbound-gateway>
. 그리고이 방법의 경우 Spring Integration은 조언 (예 : RequestHandlerRetryAdvice
)을 적용합니다.
여기에서 cacheManager
빈을 구성하고 캐시 이름을 선택하고 캐시 항목을 key
으로 결정해야합니다. 위의 샘플에서 #a0
은 인수의 Message
개체입니다. 따라서 메시지 속성 (페이로드 및 헤더)에 대해 SpEL 식을 지정할 수 있습니다. 그리고 handleRequestMessage
의 결과는 캐시에 저장됩니다.
그리고 HTTP reqeust에 대해 동일한 매개 변수를 제공하면 결과가 캐시에서 반환됩니다.