如何在Java的Apache Camel路由中引用Exchange属性计算
Apache Camel中引用Exchange属性计算新属性的正确写法
直接给你几种可行的写法,都不需要手动获取Exchange引用:
用Simple表达式直接计算(最简洁)
你之前混淆了配置文件属性和Exchange属性的引用方式,Exchange属性要写${exchangeProperty:n},而且Simple本身支持算术运算,直接一步到位:.setProperty("2n", simple("${exchangeProperty:n} * 2"))Camel会自动在路由执行时从当前Exchange里取出
n属性,完成乘法计算后赋值给2n。用Lambda表达式(适合复杂逻辑)
如果需要更灵活的逻辑,可以用Lambda直接操作Exchange对象:.setProperty("2n", exchange -> { Integer nValue = exchange.getProperty("n", Integer.class); return nValue != null ? 2 * nValue : null; })这里Lambda的参数就是当前的Exchange引用,直接调用
getProperty获取值再计算。补充说明
你之前写的${properties:n}是用来读取配置文件中的属性(比如application.properties里的键值对),不是Exchange的属性,所以会取不到值,一定要改成${exchangeProperty:n}。
内容的提问来源于stack exchange,提问作者Kelly
相关产品推荐
相关产品推荐

