Camel-Exchange-Eigenschaft nicht in die Auswertung mit einfachen, in xml

Ich versuche, um eine Immobilie isEven an der Börse.Eigenschaft und verwenden Sie dann Wahl wenn zu bewerten, es in der route.
Die Eigenschaft wird eingestellt, aber ich bin immer der sonst Ergebnis (NACK) egal was isEven festgelegt ist.

Hier ist, wo ich es:

//Below is used for development
//If the property.isEven == true then an ACK will be returned from the Mock HRM
//If false then NACK

    int lastDigit = Integer.parseInt(exchange.getExchangeId().substring(exchange.getExchangeId().length() - 1));

    //check if lastDigit is odd or even
    if ((lastDigit & 1) == 0)
    {
        exchange.setProperty("isEven", Boolean.TRUE);
        System.out.println("\n\n\n********** Exchange Id lastDigit " + lastDigit + " isEven: " + exchange.getProperty("isEven") + " ***********");

    }
    else
    {
        exchange.setProperty("isEven", Boolean.FALSE);
        System.out.println("\n\n\n********** Exchange Id lastDigit " + lastDigit + " isEven: " + exchange.getProperty("isEven") + " ***********");

    }

Die println ' s zeigen, dass ich die Einstellung isEven die Weise, die ich erwarte.
Hier ist die route:

<!-- Used to ramdomly send Ack or Nack -->
<log message="isEven property is :: ${property[isEven]}" />
    <camel:choice>
        <camel:when>
            <simple>"${property[isEven]}"</simple>
                <transform>
            <constant>ACK</constant>
            </transform>    
        </camel:when>
        <camel:otherwise>
            <transform>
            <constant>NACK</constant>
        </transform>    
        </camel:otherwise>
    </camel:choice>

Log-Nachricht, die niemals wertet den Ausdruck ${property[isEven]}
Hier ist die Ausgabe
log[isEven Eigenschaft :: ${property[isEven]}]

wenn ich den einfachen Ausdruck um explizit zu überprüfen, für wahr, ich alway get ACK egal, was die Eigenschaft festgelegt ist.

<simple>"${property[isEven]} == true"</simple>

Ich habe gesucht im Internet aber nicht finden konnten eine Menge von Beispielen mit einfachen und Exchange-Eigenschaft.

Kann jemand sehen, was ich bin fehlt?

Dank,

Andrew

Nachdem Peter zeigte, konnte er es einfach tun ich habe versucht, seine 2 Beispiele, ich hätte nicht bereits versucht. Hier ist eine. Es hat bei mir nicht funktioniert. Es erzeugt Hallo :: NACK, ob isEven ist true oder false:

<camel:choice>
            <camel:when>
                <simple>${property[isEven]} == "true"</simple>
                <log message="HELLO :: ACK" />
                <!-- <transform>
                    <constant>ACK</constant>
                </transform> -->    
            </camel:when>
            <camel:otherwise>
                <log message="HELLO :: NACK" />
                <!-- <transform>
                    <constant>NACK</constant>
                </transform> -->    
            </camel:otherwise>
        </camel:choice>

Ist hier etwas Interessantes. Es unten aussieht wie das Protokoll sagt, dass die leere Auf dem letzten wie

********** Exchange Id lastDigit 2 isEven: true ***********

14/02/20 14:09:13 INFO interceptor.Tracer: >>> (toHRMRoute) bean://hl7handler?method=handleORM --> log[isEven property is :: ${property[isEven]}] <<< Pattern:InOut, Properties {CamelToEndpoint=bean://hl7handler?method=handleORM, CamelMessageHistory [DefaultMessageHistory[routeId=toHRMRoute, node=to3], DefaultMessage History[routeId=toHRMRoute, node=log1]], CamelCreatedTimestamp=Thu Feb 20 14:09:13 CST 2014}

14/02/20 14:09:13 INFO toHRMRoute:  ** isEven property is :: **

Ich denke, Peter ist richtig, dass es die Art und Weise habe ich meine Routen einrichten.

<endpoint id="hrmMockHL7Listener"
        uri="netty:tcp://localhost:9200?sync=true" />
<!-- Sending data using postman to a rest server-->
<route id="pushRESTRoute">
<from uri="cxfrs://bean://pushRESTServer" />

    <!-- this process is where we set isEven on the Exchange-->
<process ref="transformer"/>
    <!-- Send it to a tcp listener at port 9200-->
<to ref="hrmMockHL7Listener" /> 
</route>
<!-- Changed routes does the Exchange keep properties? -->
<route id="toMRoute">
<from uri="hrmMockHL7Listener" />
<to uri="bean:hl7handler?method=handleORM" />
<!-- Used to ramdomly send Ack or Nack -->
<log message="isEven property is :: ${property[isEven]}">
    //see the beginning of the question for choice code.

Blick auf die Ausgabe, die es scheint, die isEven Eigenschaft verworfen wird zwischen Routen:

14/02/21 09:37:26 INFO interceptor.Tracer: >>> (pushRESTRoute) ref:transformer --> tcp://localhost:9200 <<< Pattern:InOut, Properties {CamelMessageHistory=[DefaultMessageHistory[routeId=pushRESTRoute, node=process1], DefaultMessageHistory[routeId=pushRESTRoute, node=to1]], CamelCreatedTimestamp=Fri Feb 21 09:37:26 CST 2014, isEven=true}    

Sehen isEven am Ende? Der nächste tracer, die kommt nicht es

/02/21 09:37:26 INFO interceptor.Tracer: >>> (toMRoute) from(tcp://localhost:9200) --> bean://hl7handler?method=handleORM <<< Pattern:InOut, Properties:{CamellMessageHistory=[DefaultMessageHistory[routeId=toMRoute, node=to3]], CamelCreatedTimestamp=Fri Feb 21 09:37:26 CST 2014}

Vom Exchange-javadoc

An Exchange is the message container holding the information during the entire routing of a Message received by a Consumer.

Tut gesamte gehören über differents Routen?

Welche version von Camel verwenden Sie?
Ich bin mit 2.12.2

InformationsquelleAutor KingAndrew | 2014-02-20

Schreibe einen Kommentar