Camel (字符串)返回错误消息

iovurdzv  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(133)

我的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)
有什么建议吗?
谢谢你,哈迪

piv4azn7

piv4azn71#

用途

String body = exchange.getIn().getBody(String.class);

相关问题