我有一个从队列中读取的大型XML消息,我需要将其拆分为块并将其转换为对象,然后根据对象将它们路由到各个目的地 .
所以我已经将routeBuilder配置为
ChoiceDefinition choice = from(routeConfig.getFromEndpoint())
.split().method(xmlSplitter, "splitMessage").streaming().process(xmlProcessor).choice();
for (RouteConfig filter : filters) {
choice = choice.when(header(REPORT_TYPE_HEADER_NAME).contains(filter.getReportTypeHeaderFilter()))
.to(filter.getToEndpoint());
}
choice.otherwise().to(routeConfig.getErrorEndpoint());
但路由根本没有发生,所有消息都被发送到errorEndpoint . 我发现原因是拆分器删除了标头,因为它在路由之前 .
似乎我不能在路由后使用拆分 .
解决这个问题的解决方案是什么?
1 回答
split()不应该删除 Headers ...你确定你的xmlSplitter / xmlProcessor没有引起问题吗?
这是一个简单的例子,表明 Headers 被保留了......