0

Spring DSL を使用したルーティングのためにラクダを試しています。宛先にメッセージを取得できません。私は何かが欠けていることを知っています。問題を理解するのを手伝ってください。以下のように deviceMessageRouteIdentifier にヘッダーを設定しました

    Message outMsg = exchange.getOut();
    outMsg.setHeader("device_template_id","11");
    outMsg.setHeader("view_id", "2");  

私のキャメルルートはここにあります

  <camel:route>
    <camel:from uri="direct:devicemessageprocessor"/>
    <camel:bean ref="deviceMessageRouteIdentifier"/>
    <camel:to uri="seda:deviceRouting"/>
    </camel:route>
            <camel:route>
        <camel:from
            uri="seda:deviceRouting?concurrentConsumers=10&amp;blockWhenFull=true&amp;purgeWhenStopping=true" />
        <choice>
            <when>
                <header>$device_template_id = '11'</header>
                <to uri="direct:gen2Bridge" />
            </when>
            <when>
                <header>$view_id = '1'</header>
                <to uri="direct:prediction" />
            </when>
        </choice>
    </camel:route>

  <camel:route>
        <camel:from uri="direct:gen2Bridge"/>
        <camel:bean ref="gen2BridgeProcessor" />
  </camel:route>

deviceMessageRouteIdentifier に到達できますが、宛先 gen2BridgeProcessor に到達できません

前もって感謝します

4

1 に答える 1

0

ヘッダーではなく、述語として単純な言語を使用する必要があります。header は、ヘッダー値の検索用です。

 <header>$device_template_id = '11'</header>

する必要があります

 <simple>${header.device_template_id} == '11'</simple>

そして、等号演算子は==. 詳細については、簡単な言語を参照してください

于 2015-09-27T14:22:36.440 に答える