Camel - 基于JSON请求体的基于内容的路由

时间:2016-10-17 14:39:22

标签: json apache-camel

我有一个camel REST端点,它接收以下形式的请求: -

{"method" : "getHello"}

根据请求正文中method字段中的值,我想将请求路由到不同的路由。所以我尝试了下面这样的事情: -

from("jetty:http://localhost:8888/hello").unmarshal().json(JsonLibrary.Jackson, RouteRequest.class)
            .choice()
                .when(method(DynamicRouter.class, "route").isEqualTo("getHello")).to("stream:out")
            .otherwise()
                .log("Processing Failed");

动态路由器类如下所示: -

public class DynamicRouter {
    public String route(RouteRequest req) { 
        switch (req.getMethod()) {
        case "getHello":            
            return "xxxx";
        }
        return null;
    }
}

即使我从xxxx返回route(),但下面的谓词总是评估为真,它永远不会去。其他

isEqualTo("getHello")).to("stream:out")

有人能让我知道我做错了什么吗?还有一些更好的方法来实现我的目标吗?

我在camel 2.16.3

1 个答案:

答案 0 :(得分:1)

这是按预期工作的。我的log4j.properties未在类路径上正确配置。所以日志没有显示出来。