检索交换对象的主体,它是ApacheCamel中的映射


Map<String,String> map= new HashMap<>();
map.put("simpletext","Simple text");
map.put("errortext","Error text");
exchange.getIn().setBody(map);

基于交换对象中映射的键,我想将它们写入两个单独的文件位置。如何在apachecamel中实现这一点?

您可以使用拆分的EIP将每个映射条目发送到一个不同的文件。例如:

.split(simple("${in.body.entrySet}"))
.setHeader("theKey", simple("${body.getKey}"))
.setBody(simple("${body.getValue}"))
.process( e -> this.setTargetFileName(e) )
.to("file:/mydir")
.end()


private void setTargetFileName(Exchange exchange) {
String key = exchange.getMessage().getHeader("theKey", String.class);
if ( "simpletext".equals(key) ) {
exchange.getMessage().setHeader("CamelFileName", "targetA.txt");
} else {
exchange.getMessage().setHeader("CamelFileName", "targetB.txt");
}     
}   

最新更新