【发布时间】:2017-10-03 18:16:24
【问题描述】:
我一直在尝试使用 Apache Camel 创建基于 REST 的微服务。根据我的实验,这就是我使用 Jetty 创建回显服务的方式:
Maven
在 Maven 构建中包含以下依赖项:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jetty</artifactId>
</dependency>
Java
在 Java 中创建了一个小路由,它获取请求,将其转换为字符串,将其保存到文件中,然后将其发送回客户端:
import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
public class EchoHttpServer {
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("jetty://http://localhost:8099/echo?httpMethodRestrict=POST")
.convertBodyTo(String.class)
.to("file://D:/work")
.process(exchange -> exchange.getOut().setBody(exchange.getIn().getBody()));
}
});
context.start();
}
}
集成测试
这可以使用 Chrome 扩展 Postman 进行测试,您可以使用它发送一个 POST 请求,然后回复回应:
这是使用 Apache Camel 创建基于 REST 的服务的推荐方法吗?上述方法的潜在问题是什么?
【问题讨论】:
-
如果您想使用 Camel 创建基于 REST 的服务,我建议您查看 Camel Rest DSL:camel.apache.org/rest-dsl.html
-
我目前正在为内部评估创建一个基于 Camel 的伪 REST 服务。它使用 Camel 的 REST DSL 与 Jetty 和某些其他技术,如 JSON HAL 支持、Spring Security、Amazon XRay 和 Mongo Views。有兴趣的可以check out the Github repo。但是请注意,这更像是一个技术演示,而不是一个真正成熟的 API
标签: java rest apache-camel