使用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我不知道不知道怎么做。
所以我的问题是如何在骆驼路线中放置自定义名称?
感谢所有人。
答案 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()