【问题标题】:Why using Apache Camel rest DSL rather than spring boot rest controller?为什么使用 Apache Camel rest DSL 而不是 spring boot rest 控制器?
【发布时间】:2020-08-02 04:50:01
【问题描述】:

刚刚搜了很多camel的主题,很多都提到Camel提供了其余的api支持,不知道为什么提供?因为它可以集成很多框架,比如spring,springmvc/springboot也提供了rest能力。

作为骆驼的初学者,我的第一个问题是:apache骆驼休息的好处/广告是什么?为什么使用骆驼休息路线api而不是springboot restcontroller?至少,你可以看到 springboot rest 控制器可以为 restful api 提供明确的设计/实现、可读的注释,并与 spring 验证、swagger UI 等很好地集成。

我的另一个问题,如果需要使用 apache camel,我们可以使用 spring rest 控制器作为 rest api 并使用骆驼作为其他部分吗?还是不建议这样做?

【问题讨论】:

标签: java spring spring-boot rest apache-camel


【解决方案1】:

嗯,Camel 是一个可以在许多环境中使用的集成库。它可以独立使用,与 Spring Framework 一起使用,在 Apache Karaf 等中。所以这是第一点:

当 Camel 在没有 Spring 的情况下使用时,Spring 对 REST 的支持毫无价值。

Camel 以其 200 多个组件而著称。它主要支持所有(协议、数据格式等)在外面使用的东西,并且它将大部分烦人的传输级代码抽象出来。您只需使用 DSL 在不同类型的端点之间构建集成。

rest("/orders")
    .post()
    .to("activemq:queue:myQueue")

这是一个 3 行 Camel 集成,它接收来自客户端的 REST 调用 (POST) 并将接收到的数据发送到 JMS 消息队列。这里我们得到了第二点:

即使 Spring 可用,Camel 也必须在 Camel DSL 中提供 REST 支持,以允许 REST 与其他端点集成

是的,您当然可以使用 Spring Framework 构建 REST 服务,然后从 Camel Route 调用此 REST 服务。但不可能的是,将此 Spring REST 服务用作 Camel Route 的消费者(上面的 3 行示例)。

【讨论】:

  • 明白了!非常感激!你解决了一个困扰我很久的问题! :)
【解决方案2】:

Burki 的反应很棒。在我看来,值得增加两点。

  • 如果您喜欢 Spring 让您实现服务的方式,您仍然可以从这两个世界中受益,并通过使用 FluentProducerTemplate 的 istance 将您的 @RestController 与您的 Camel Route 集成。

    李>
  • 如果您从一开始就使用 Camel 构建服务,包括 Rest DSL,您可以从应用程序的最初阶段就利用 Camel 的错误处理实现(这非常棒,恕我直言)

通常情况下,使用 Camel 不仅仅是减少代码行数。 Camel 为您带来了完整的轻量级框架、280 多个组件、类型和数据格式转换器的强大功能,更不用说 EIP,因此可以将 REST DSL 视为前门 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2021-08-13
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多