如何使用Apache Camel和Jetty创建REST微服务

时间:2017-10-03 18:16:25

标签: java rest apache-camel

我一直在尝试使用Apache Camel来创建基于REST的微服务。根据我的实验,这就是我用Jetty创建echo服务的方式:

的Maven

在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请求,然后回复:

enter image description here

这是使用Apache Camel创建基于REST的服务的推荐方法吗?以上采取的方法存在哪些潜在问题?

1 个答案:

答案 0 :(得分:1)

如何使用Camel公开REST服务有多种方法。

Pure servet - 这就是你已经做过的事情。似乎是快速而简单的方式(可能太简单)。

REST Camel端点(感谢noMad)http://camel.apache.org/restlet.html

在带框架的容器中。我最喜欢的是Apache KarafCamel-CXF。启动需要更多时间,运行更多内存,但框架允许其他功能,例如身份验证,审计,日志记录等。

如果有人找到其他方式,请添加回答或评论,我也希望找到新的选项