2016-04-22 11 views
0

Ich bin ziemlich neu in Mule und arbeite an einem dynamischen Routing mit Mule. Zur Laufzeit erhalte ich die Portnummer, unter der mein Service gehostet wird.Dynamisches Routing in Mule

Bitte meinen Code unten finden:

<script:component doc:name="Script"> 
    <script:script engine="groovy"> 
     <![CDATA[ 
     String endpnt = reqUrl.prepareFile(requestUrl); 
     message.setProperty('port', reqUrl.getPort(),org.mule.api.transport.PropertyScope.INVOCATION); 

     ]]> 
    </script:script> 
    </script:component> 

<logger message="#[flowVars['port']]" level="INFO" doc:name="port" /> 

     <http:request config-ref="FlowRef" 
        path="/subflow" method="GET" doc:name="Invoke Dynamic service" /> 

Das obige Skript gibt mir die Portnummer, auf der der Dienst gehostet wird und bin Berufung auf die Verwendung derselben

<flow name="testFlow1"> 
    <http:listener config-ref="BaseRef" path="/subflow" 
     doc:name="Eval" /> 
    <logger message="calling testFlow1 service" level="INFO" doc:name="Logger" /> 

    <http:request config-ref="ServiceMonProxy1" path="/" 
     method="GET" doc:name="Credit validation"/> 
</flow> 

Das Problem ist "#[flowVars['port']]" wird nicht zur Laufzeit gelöst und Mule wirft mir eine Ausnahme, die unsauber Port

sagt

Bitte assistieren.

Antwort

0

Versuchen Sie, die Nachricht in Ihrem Skript zurückzukehren:

<script:component doc:name="Script"> 
<script:script engine="groovy"> 
    <![CDATA[ 
    String endpnt = reqUrl.prepareFile(requestUrl); 
    message.setProperty('port', reqUrl.getPort(),org.mule.api.transport.PropertyScope.INVOCATION); 
    return message; 
    ]]> 
</script:script> 

Hoffe, es hilft.

/Tony

+0

Ich bin in der Lage, den Wert zu erhalten, aber Mule ist nicht in der Lage, das gleiche zur Laufzeit aufzulösen. –

+0

Können Sie bitte die Konfigurationsreferenz anzeigen? –

+0

druckt den Wert des Ports, aber derselbe wird nicht gesetzt, wenn in

0

eine Antwort gefunden. Hier finden Sie den Code unten

ersetzt nur

<http:request config-ref="FlowRef" 
       path="/subflow" method="GET" doc:name="Invoke Dynamic service" /> 

mit

<http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="#[flowVars['port']]" path="a" doc:name="HTTP"/> 

und es funktionierte.