2017-10-19 10 views
0

をメールを送信:PDFを作成し、私たちは、次のシナリオを持っているApacheのラクダを通じて

  • お客様には、XMLの2つの部分
  • を含むXMLメッセージ最初の部分は、の作成に使用されなければならない情報が含まれている送信等、被験者、XMLのFOP成分とXSLT
  • 第2の部分は、メール本文に使用される情報が含まれているラクダコロラド

を使用してPDF nfiguration:

  • 、受信したXMLをXSLに変換することができます:FO(XSLTを使用して)
  • は、FOPのコンポーネントが呼び出されることができ、PDF文書が
  • 利用可能であるよりも、メール・コンポーネントはなく、より呼び出すことができます私は次の問題があります
    • メールの情報を含む元のメッセージは利用できなくなりました。 1つの可能性は、元のボディをヘッダーまたはプロパティ内に格納することです。
    • 添付ファイルとしてPDFを追加する必要があります。私は、本体、添付ファイルを移動するためのデフォルトのプロセッサ、フィルタなどがないと思う。だから私は自分のプロセッサ

質問

  • を記述する必要が持っている誰もが同様のユースケースのための一例のラクダの設定?
  • スプリッタパターンの場合がありますが、現在の例ではXMLファイルに複数の注文があり、XMLファイルには複数の項目は含まれていませんが、データが含まれています。このユースケースでうまくいく別のパターンがありますか?

非常に助かります。

私は以下のラクダの設定で試しましたが、マージ戦略ではジップは決して存在しません。 createZipルート

 <camel:multicast strategyRef="mergeStrategy"> 
      <camel:to uri="direct:createZip"/> 
      <camel:to uri="direct:createRequestMessage"/> 
     </camel:multicast> 

     <camel:to uri="smtp://[email protected]"></camel:to> 
    </camel:route> 

    <camel:route> 
     <camel:from uri="direct:createZip" /> 
     <camel:from uri="file:////data/tmp/zip/input"> 
      <camel:description>Reading files from the input folder</camel:description> 
     </camel:from> 

     <camel:aggregate strategyRef="zipStrategy" eagerCheckCompletion="true" completionFromBatchConsumer="true"> 
      <camel:correlationExpression> 
       <camel:constant>true</camel:constant> 
      </camel:correlationExpression> 

      <camel:setHeader headerName="dummybody"> 
       <camel:simple>${body}</camel:simple> 
      </camel:setHeader> 
     </camel:aggregate> 

     <camel:setHeader headerName="Strategy-Attachment"> 
      <camel:constant>true</camel:constant> 
     </camel:setHeader> 

    </camel:route> 


    <camel:route> 
     <camel:from uri="direct:createRequestMessage" /> 
     <camel:to uri="create_request.xslt?saxon=true" /> 
     <camel:setHeader headerName="Content-Type"> 
      <camel:constant>text/html</camel:constant> 
     </camel:setHeader> 
     <camel:setHeader headerName="Strategy-Body"> 
      <camel:constant>true</camel:constant> 
     </camel:setHeader> 
    </camel:route> 

答えて

0

direct:createZipとのあなたのルートが間違っているから応答がないように見えます、あなたは本当に同じルート内から2×を持つことはできません。代わりに、Content Enricher EIPパターンを使用する必要があります。http://camel.apache.org/content-enricher.html

ファイルを使用するために使用できる<pollEnrich>があります。ファイルがない場合の対処方法を覚えておき、タイムアウトを設定する必要があります。それで、これに関するドキュメントを読んでください。

関連する問題