骆驼 REST Bean 链接
Camel REST Bean Chaining
我目前有一个 REST 路由构建器,如下所示:
rest("/v1")
.post("/create")
.to("bean:myAssembler?method=assemble(${in.header.content})")
.to("bean:myService?method=create(?)");
bean myAssembler 采用原始 JSON 并将其转换为 MyObject。然后返回此对象,我希望将其转发到 myService 作为其创建方法的参数。
如何使用 Camel 执行此操作?
如果您将 bean 作为方法的参数,您的 bean 将自动绑定到特定参数,例如 Exchange(请参阅完整列表 Parameter binding)。
一种解决方案是像这样定义您的路由和 bean:
restConfiguration()
.component("restlet")
.bindingMode(RestBindingMode.json)
.skipBindingOnErrorCode(false)
.port(port);
rest("/v1")
.post("/create")
.route()
.to("bean:myAssembler?method=assemble")
.to("bean:myService?method=create");
像这样的豆子
public class MyAssembler {
public void assemble(Exchange exchange) {
String content = exchange.getIn().getHeader("content", String.class);
// Create MyObject here.
MyObject object; // ...transformation here.
exchange.getOut().setBody(object);
}
}
还有这个
public class MyService {
public void create(MyObject body) {
// Do what ever you want with the content.
// Here it's just log.
LOG.info("MyObject is: " + body.toString());
}
}
所示配置的依赖项是
org.apache.camel/camel-core/2.15.3
org.apache.camel/camel-spring/2.15.3
org.apache.camel/camel-restlet/2.15.3
javax.servlet/javax.servlet-api/3.1.0
org.apache.camel/camel-jackson/2.15.3
org.apache.camel/camel-xmljson/2.15.3
xom/xom/1.2.5
我目前有一个 REST 路由构建器,如下所示:
rest("/v1")
.post("/create")
.to("bean:myAssembler?method=assemble(${in.header.content})")
.to("bean:myService?method=create(?)");
bean myAssembler 采用原始 JSON 并将其转换为 MyObject。然后返回此对象,我希望将其转发到 myService 作为其创建方法的参数。
如何使用 Camel 执行此操作?
如果您将 bean 作为方法的参数,您的 bean 将自动绑定到特定参数,例如 Exchange(请参阅完整列表 Parameter binding)。
一种解决方案是像这样定义您的路由和 bean:
restConfiguration()
.component("restlet")
.bindingMode(RestBindingMode.json)
.skipBindingOnErrorCode(false)
.port(port);
rest("/v1")
.post("/create")
.route()
.to("bean:myAssembler?method=assemble")
.to("bean:myService?method=create");
像这样的豆子
public class MyAssembler {
public void assemble(Exchange exchange) {
String content = exchange.getIn().getHeader("content", String.class);
// Create MyObject here.
MyObject object; // ...transformation here.
exchange.getOut().setBody(object);
}
}
还有这个
public class MyService {
public void create(MyObject body) {
// Do what ever you want with the content.
// Here it's just log.
LOG.info("MyObject is: " + body.toString());
}
}
所示配置的依赖项是
org.apache.camel/camel-core/2.15.3
org.apache.camel/camel-spring/2.15.3
org.apache.camel/camel-restlet/2.15.3
javax.servlet/javax.servlet-api/3.1.0
org.apache.camel/camel-jackson/2.15.3
org.apache.camel/camel-xmljson/2.15.3
xom/xom/1.2.5