我有一个用camel 2.10.6编写的应用程序,它使用EIP aggregator
。它接收2个文件:一个以-information
结尾,另一个以-report
结尾。我必须处理这两个文件(单独处理),处理后我必须组合(即aggregate
)。
为实现这一目标,我使用的是EIP aggregator
。
我已经使用spring DSL定义了路由。我没有相关表达式。也就是说,我的表达式是常量true
。
<route>
<from uri="activemq:assemblingAll" />
<log message="\n---------->>> @ASSEMBLEALL" />
<aggregate strategyRef="myAggregator" completionSize="2">
<correlationExpression>
<constant>true</constant>
</correlationExpression>
<to uri="activemq:toBeValidated" />
</aggregate>
</route>
我想关联属于一起的文件,即带有相同前缀的文件(前缀是之前的字符串 { {1}}(分别为-information
)。我相信通过在标题中设置一些ID也可以做到这一点。
我的问题是我不知道该怎么做。到目前为止,我的所有尝试都已生成.report
。
任何提示?
提前致谢。
我的路线(简化)如下:
org.apache.camel.CamelExchangeException: Invalid correlation key
答案 0 :(得分:0)
也许使用bean引用作为关联表达式。
<correlationExpression>
<method ref="dataCorrelationExpression" method="getPrefixString" />
</correlationExpression>
然后写一个bean来做,就像这样
public class DataCorrelationExpression {
public String getPrefixString(@Header("CamelFileName") String filename) throws Exception {
String[] parts = filename.split("\\.");
if (parts.length != 2) {
throw new Exception("Oh no!");
}
return parts[0];
}
}
确保在Spring上下文中实例化bean。