apache-camel - ClassCastException by (String) getIn().getBody
问题描述
我的 RouteBuilder 中有这条骆驼路线:
@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();
}
我不明白为什么 ClassCastException 发生在(String) exchange.getIn().getBody()
不幸的是,从日志中,我没有得到信息,getBody() 的对象来自哪个类。是。
Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - java.lang.ClassCastException]
org.apache.camel.RuntimeCamelException: java.lang.ClassCastException
只转换为 String 绝对是错误的。它在文档中说明:
Object getBody()
Returns the body of the message as a POJO
如果我只是在没有任何逻辑的情况下返回 true:
@Override
public boolean matches(Exchange exchange) {
return true;
}
,很好,路线按预期结束(将正文写入目录 file://out/wished)
有什么建议吗?
谢谢你,哈迪
解决方案
利用
String body = exchange.getIn().getBody(String.class);
推荐阅读
- python - SQLAlchemy 自定义关键字参数因 TypeError 失败:'argument' is is an invalid keyword argument for this function
- javascript - 为什么必须 json.parse(buffer.concat(chunks)) 两次?
- php - 处理多个表的sql选择查询
- python - 散景悬停阿尔法和颜色
- python - 让 Python RegEx 更简洁
- python - 检查二维数组是否包含 Numpy 中的特定一维数组
- asp.net-core - 如何解决 aspnet core 2.1 中的版本冲突?(2.1.1 >= 2.1.0-rc1-final)
- powershell - 导入模块速度差异
- couchbase - 我可以在 FTS 匹配后返回文档数据吗?
- aframe - A-frame 想要点击实体显示其他实体