使用java JMS API,我从一个DB获得一个字节数组,然后将它作为一个javax.jms.BytesMessage发送给一个ActiveMQ。之后,随着骆驼我希望把一个位置的文件,使用apache camel xml路由,如何从JMS消息设置自定义的fileName?
我在骆驼这条路线:
<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我不知道该怎么做。
所以我的问题是我怎么能把一个自定义名称在骆驼路线?
感谢所有。
这将不会正常工作,因为uri会在构建路线时进行评估。上面的CamelFileName头解决方案应该可以工作。 –
@ChristianSchneider:它像一个魅力。文件名支持“文件表达式语言”=在运行时进行解释的简单语言,而不是路径构建时间。刚刚测试此路线: ' \t \t \t <从URI = “ActiveMQ的:队列:foo.in”/> \t \t \t <到URI =“文件:// C:/输出/文件名= $ {header.filename}“/> \t \t ' 随着两个不同的消息(其中字符串属性文件名= MyFile.txt的和文件名= YourFile.txt),他们只是创建为预期在C:\输出\ MyFile.txt和c:\ output \ YourFile.txt) –
谢谢@Petter,就像你说的那样,它就像一个魅力一样。 – j2gl