2017-01-26 3 views
0
<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> 

Danach folgt der Code, den ich benutze, um auf einige URLs über Outbound-Gateway Anfrage zu senden. Ich muss diese URL dynamisch generieren.Aufruf von Outbound-Gateway mit dynamischen Parametern.

requestbl.geturl() gibt mir den Url-Wert zurück, aber es wird nur einmal aufgerufen, wenn die Anwendung geladen wurde. Ich möchte es jedes Mal laden, wenn die Anfrage gesendet wird.

Antwort

1

Es gibt eine Alternative für Sie:

<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> 

Die zur Laufzeit gegen jeden requestMessage genannt wird und auch können Sie jede Bohne aus diesem Ausdruck nennen.

Also, Ihr Anwendungsfall würde so aussehen:

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

Dank für Erklärung. –

Verwandte Themen