我的RouteBuilder中有这样一条 Camel 路线:
@Override
public void configure() {
...
.log(LoggingLevel.DEBUG, "AfterHttp IN: ${in.headers} - ${in.body}").choice().when(new Predicate() {
@Override
public boolean matches(Exchange exchange) {
String body = (String) exchange.getIn().getBody();
return body.contains("output wished");
}
}).to("file://out/wished").end();
}
我不明白为什么在(String) exchange.getIn().getBody()
发生ClassCastException
不幸的是,从日志中,我没有得到getBody().的对象来自哪个类的信息。
Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - java.lang.ClassCastException]
org.apache.camel.RuntimeCamelException: java.lang.ClassCastException
只强制转换为String肯定是错误的。doc中有说明:
Object getBody()
Returns the body of the message as a POJO
如果我只是返回true而没有任何逻辑:
@Override
public boolean matches(Exchange exchange) {
return true;
}
,它很好,路由按预期结束(将主体写入目录file://out/wished)
有什么建议吗?
谢谢你,哈迪
1条答案
按热度按时间piv4azn71#
用途