2012-04-12 9 views
1

私の要件は一見簡単です。私は単一のディレクトリをポーリングする必要があり、必要な入力ファイルのファイル名に基づいています。キャメルルート - ファイル名のフィルタとヘッダー値の設定

a)のヘッダ値 Bを設定してください)私は明らかに私のために。これをacheiveするが、ドキュメントに基づいてfollowngが動作するはず異なるいくつかの方法を試してみました、特定のJMSキューに

をメッセージに指示それははるかに高く評価任意の助けない...

 <from uri="file:[some input directory]"/> 

     <when> 
      <simple>${file:name} contains 'new'</simple> 
      <setHeader headerName="messageType"> 
       <constant>NEW</constant> 
      </setHeader> 
      <to uri="jmsbroker:queue:[queue for new items]"/> 
     </when> 
     <when> 
      <simple>${file:name} contains 'amend'</simple> 
      <setHeader headerName="messageType"> 
       <constant>AMEND</constant> 
      </setHeader> 
      <to uri="jmsbroker:queue:[queue for amended items]"/> 
     </when> 
     <when> 
      <simple>${file:name} contains 'other'</simple> 
      <setHeader headerName="messageType"> 
       <constant>OTHER</constant> 
      </setHeader> 
      <to uri="jmsbroker:queue:[queue for other]"/> 
     </when> 
     <otherwise> 
      <bean ref="deadLetterErrorHandler"/> 
     </otherwise> 

    </route> 

を行います。

よろしく、 アンディ

答えて

2

あなたも<choice>周り<when>条件文(content based router docsを参照)

が欠落している、あなたの<otherwise>セクションでは、エラー・キューにだけルートべきか、例外をスロー...

試してみてください...

<route> 
     <from uri="file:/tmp/inbox"/> 
     <choice> 
      <when> 
       <simple>${file:name} contains 'new'</simple> 
       <setHeader headerName="messageType"> 
        <constant>NEW</constant> 
       </setHeader> 
       <to uri="jmsbroker:queue:newItems"/> 
      </when> 
      <otherwise> 
       <to uri="jmsbroker:queue:errorQueue"/> 
      </otherwise> 
     </choice> 
    </route> 
関連する問題