使用动态参数调用出站网关。

时间:2017-01-26 00:45:38

标签: java spring spring-integration

<int:inbound-channel-adapter channel="requestChannel"
    expression="''">
    <int:poller cron="0 0/2 * * * ?"/>
</int:inbound-channel-adapter>

<int:chain input-channel="requestChannel" output-channel="requestConcactChannel">
    <int:header-enricher default-overwrite="true">
        <int:header name="Accept" value="application/json" />
        <int:header name="OData-MaxVersion" value="4.0" />
        <int:header name="OData-Version" value="4.0" />
    </int:header-enricher>
    <int-http:outbound-gateway
        url="#{requestbl.geturl()}"
        expected-response-type="java.lang.String" http-method="GET"
        header-mapper="headerMapper" >
    </int-http:outbound-gateway>
    <int:service-activator ref="accountResponseHandler" />
</int:chain> 

在此之后,我使用的代码通过出站网关在某些网址上发送请求。我必须动态生成这个url。

requestbl.geturl()返回Url值,但只在加载应用程序时调用一次。我想在每次发送请求时加载它。

1 个答案:

答案 0 :(得分:1)

您可以选择其他方式:

 <xsd:attribute name="url-expression" type="xsd:string" use="optional">
        <xsd:annotation>
            <xsd:documentation>
                <![CDATA[
SpEL Expression resolving to a URL to which the requests should be sent. The resolved
value may include {placeholders} for further evaluation against uri-variables.
                ]]></xsd:documentation>
        </xsd:annotation>
    </xsd:attribute>

这是在运行时针对每个requestMessage调用的,并且您也可以从该表达式调用任何bean。

所以,你的用例就是这样:

url-expression="@requestbl.geturl()"