在Camel DSL的"to"中使用Exchange属性

6

我想在Camel Exchange上设置一个属性,然后在保存文件时使用此属性。在我的Camel DSL中,我有以下内容:

.process(processorToSetExhangeProperty)  // sets the property <uid> on the exchange
.to("file:/tmp?fileName=file-" + property("uid") + ".xml")

文件正在保存为:
"file-property{uid}.xml" though

我的处理器如下:

@Override
public void process(Exchange exchange) throws Exception {
    UUID uuid = UUID.randomUUID();
    exchange.setProperty("uid", uuid.toString());
    exchange.setOut(exchange.getIn());
}

有没有想法,可能出了什么问题,或者我如何实现这个目标?
3个回答

4

3

更新: 已经接受了上面的新答案,而不是这个以前的答案:


答案是[曾经是]:

.to("file:/tmp?fileName=file-${property.uid}") + ".xml")

这个简单的表达式引入了交换属性。完整的列表可以参见Simple Expression Language Reference


1
这部分是错误的:正如V.Goldin所说,to()组件在路由构建期间被评估。 在您的情况下,它部分地起作用,因为uid可能只计算一次。 如果您在多条消息之后检查uid,则应该注意到它可能永远不会改变。 - рüффп

1

1
${property.xxx}在2.x版本中已被弃用。请使用${exchangeProperty.xxx},这是该功能的正确名称。 - Petr Flídr
1
${property.xxx}在2.x版本中已经被弃用。请使用${exchangeProperty.xxx},这是该函数的正确名称。 - Petr Flídr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接