如何在使用更丰富的模式时使用过滤或从链返回
这是我的情景 我正在使用更丰富的模式从请求通道中检索数据,然后用于丰富有效负载。 请求通道将调用multipe webservices来检索数据。仅当第一个Web服务具有有效数据时才需要调用第二个Web服务。如果不是,我需要回到浓缩器。 当过滤器发生时,我得到这个异常org.springframework.integration.handler.ReplyRequiredException:没有处理程序产生的回复
我的信息流是否正确或需要添加其他内容?
<si:enricher id="enricher" input-channel="channelone"
request-channel="retrieveDataChannel" output-channel="outputChannel" >
<si:property name="amount" expression="payload.amount"/>
</si:enricher>
<si:chain id="dataChain" input-channel="retrieveDataChannel" >
<si:header-enricher >
<si:header name="Content-Type" value="application/json" />
</si:header-enricher>
<si-http:outbound-gateway id="Gateway1"
url="http://$webservice{host}"
http-method="POST"
rest-template="restTemplate"
expected-response-type="com.xxx.response.Response1">
</si-http:outbound-gateway>
<si:filter expression="payload.amount lt 30" />
<si-http:outbound-gateway id="Gateway2"
url="http://$webservice{host}"
http-method="POST"
rest-template="restTemplate"
expected-response-type="com.xxx.response.AmountResponse">
</si-http:outbound-gateway>
</si:chain>
答案 0 :(得分:0)
如果您处于请求/回复流程中,则无法在链中添加<filter/>
;富人会永远等待回复。
最简单的方法是将第二个网关移出链并使链的最后一个组件成为<router/>
并在数据良好时路由到网关,并返回一些错误处理服务否则会出现错误结果。