我有一个REST服务,我从我的spring上下文文件调用,根据收到的响应,我可以继续进行其余的处理,或者使用不同的uri_variable再次拨打同一个服务。 以下是我的上下文文件 -
<int:chain id="Search" input-channel="inputChannel" output-channel="channel1">
<int:header-enricher>
<int:header name="accept" value="application/xml" overwrite="true"/>
<int:header name="Authorization" method="getAuth" ref="Auth"/>
</int:header-enricher>
<int-xml:xpath-header-enricher>
<int-xml:header name="medId" xpath-expression="/MedicineFamily/medicineId/text()" evaluation-type="STRING_RESULT" />
</int-xml:xpath-header-enricher>
<int-http:outbound-gateway id="ServiceGateway" http-method="GET" reply-timeout="1000"
expected-response-type="java.lang.String" url="https://#{environment['dataservice.address']}:#{environment['dataservice.port']}/#{environment['dataservice.paths.medId']}"
mapped-request-headers="accept,Authorization" mapped-response-headers="medId" error-handler="ErrorHandler">
<int-http:uri-variable name="med_id" expression="headers['medId']"/>
</int-http:outbound-gateway>
<int:transformer ref="PharmacyBean" method ="formMed"/>
</int:chain>
在这里,我使用带有uri变量的出站网关调用数据服务作为从另一个服务调用接收的medId。现在根据变换器中的服务和处理结果,我可能需要再次调用此服务,但这次使用不同的uri变量。
如何使用这个新的uri变量发送回另一个变量并再次调用此服务? 另外,如果我有多个medId被返回并且我想为每一个调用服务,我如何在循环中调用此服务? 谢谢!
答案 0 :(得分:0)
在网关后添加路由器,并根据需要路由回网关。多个medId
时,路由到分路器;如果需要在拆分器后重新组合结果,请使用聚合器。
在这种情况下,您可能会发现在splitter->http->aggregator
流程中添加第二个网关更容易;否则路由器中的条件可能会变得复杂。