我一直在尝试使用Apache Camel来创建基于REST的微服务。根据我的实验,这就是我用Jetty创建echo服务的方式:
在Maven构建中包含以下依赖项:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jetty</artifactId>
</dependency>
在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扩展程序邮递员对其进行测试,您可以使用该邮件发送POST请求,然后回复:
这是使用Apache Camel创建基于REST的服务的推荐方法吗?以上采取的方法存在哪些潜在问题?
答案 0 :(得分:1)
如何使用Camel公开REST服务有多种方法。
Pure servet - 这就是你已经做过的事情。似乎是快速而简单的方式(可能太简单)。
REST Camel端点(感谢noMad)http://camel.apache.org/restlet.html
在带框架的容器中。我最喜欢的是Apache Karaf和Camel-CXF。启动需要更多时间,运行更多内存,但框架允许其他功能,例如身份验证,审计,日志记录等。
如果有人找到其他方式,请添加回答或评论,我也希望找到新的选项