0

Java JMS API を使用して、DB からバイト配列を取得し、それを javax.jms.BytesMessage として ActiveMQ に送信しています。その後、キャメルでファイルを場所に置きたいのですが、

私はキャメルでこのルートを持っています:

    <route>
        <from uri="activemq:queue.fileOuput"/>
        <convertBodyTo type="java.nio.ByteBuffer"/>
        <to uri="file://C:/output/"/>
    </route>

しかし、私の問題は、私のファイルがc:\output\ディレクトリにあり、ファイル名としてメッセージIDを持つファイルを取得した queue-preVerificacion-fileoutput-ID-jmachine-57401-1347652410053-0-1-1-1-1 ことですMyFile.xml.

fileName や file:name などのメッセージ プロパティを設定しようとしましたが、Apache ドキュメントでヘッダー「org.apache.camel.file.name」を配置する必要があることもわかりましたが、jms ではわかりませんどうやってするの。

だから私の質問は、キャメルルートにカスタマイズされた名前を付けるにはどうすればよいですか?

ありがとうございます。

4

3 に答える 3

4

ファイル名を jms メッセージに (文字列プロパティとして) 配置するだけです。

// Something like this if you send the message using plain java/jms:
msg.setStringProperty("filename","MyFile.xml");
..//Send msg

次に、キャメルでこのようなことを行うことができます

<to uri="file://C:/output/?fileName=${header.filename}"/>
于 2012-09-14T23:05:28.300 に答える
3

「CamelFileName」ヘッダー値を設定する必要があります(メッセージヘッダーなどに基づく)

<route>
    <from uri="activemq:queue.fileOuput"/>
    <convertBodyTo type="java.nio.ByteBuffer"/>
    <setHeader headerName="CamelFileName">
        <constant>${header.fileName}</constant>
    </setHeader>
    <to uri="file://C:/output/"/>
</route>
于 2012-09-15T05:19:51.333 に答える