使用apache camel xml路由,如何从JMS消息设置自定义fileName?

时间:2012-09-14 20:33:53

标签: jms activemq apache-camel

使用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我不知道不知道怎么做。

所以我的问题是如何在骆驼路线中放置自定义名称?

感谢所有人。

2 个答案:

答案 0 :(得分: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}"/>

答案 1 :(得分:0)

我认为“ org.apache.camel.file.name”适用于骆驼1.x,在2.x版本中CamelFileName可以正常工作。但是我想要一个更动态的文件名,该名称基于内容。使用处理器的此示例运行良好(骆驼2.18)

onHandleIntent()