我不明白骆驼到底是干什么的。

如果你能用101个单词介绍一下骆驼:

到底是什么?它如何与用Java编写的应用程序交互?它是与服务器一起使用的吗?这是一个独立的项目吗?

请解释一下骆驼是什么。


当前回答

骆驼从A向B发送消息:

为什么要有一个完整的框架?如果你有:

许多发送者和许多接收者十几种协议(ftp、http、jms等)许多复杂的规则仅向接收方a和B发送消息a将消息B以XML的形式发送给接收方C,但部分地将其翻译、丰富(添加元数据)和IF条件X,然后也将其以CSV的形式发送到接收方D。

因此,现在您需要:

在协议之间转换将组件粘合在一起定义路线-路线在某些情况下过滤某些内容

Camel为您提供了以上(以及更多)开箱即用的功能:

使用一种很酷的DSL语言,您可以定义什么以及如何:

  new DefaultCamelContext().addRoutes(new RouteBuilder() {
        public void configure() {
            from("jms:incomingMessages")
                    .choice() // start router rules
                    .when(header("CamelFileName")
                            .endsWith(".xml"))
                    .to("jms:xmlMessages")
                    .when(header("CamelFileName")
                            .endsWith(".csv"))
                    .to("ftp:csvMessages");
}

另请参阅《这和这》和《骆驼在行动》(正如其他人所说,这是一本优秀的书!)

其他回答

从另一个角度定义:

ApacheCamel是一个集成框架。它由一些Java库组成,帮助您在Java平台上实现集成问题。这意味着什么,以及它与一方的API和另一方的企业服务总线(ESB)的区别,在我的文章“何时使用ApacheCamel”中进行了描述。

有很多框架可以帮助我们进行消息传递和解决消息传递中的问题。其中一种产品是Apache Camel。

大多数常见问题都有被称为设计模式的解决方案。消息传递的设计模式是企业集成模式(EIP),这里对此进行了很好的解释。Apache camel帮助我们使用EIP实现我们的解决方案。

集成框架的优势在于它能够通过EIP或其他模式为我们提供方便,传输和组件的数量以及Apache camel在开发上的优势

每种框架都有自己的优势。Apache camel的一些特殊特性如下。

它提供了许多DSL中的编码,即流行的JavaDSL和基于Spring xml的DSL。易于使用且易于使用。Fuse IDE是一种帮助您通过UI编写代码的产品

ApacheCamel是一个用于企业集成的Java框架。例如:如果您正在构建一个与许多供应商API交互的web应用程序,我们可以使用骆驼作为外部集成工具。我们可以根据用例做更多的工作。曼宁出版的《骆驼在行动》是一本学习骆驼的好书。集成可以定义如下。

Java DSL

from("jetty://0.0.0.0:8080/searchProduct").routeId("searchProduct.products").threads()
    .log(LoggingLevel.INFO, "searchProducts request Received with body: ${body}")
    .bean(Processor.class, "createSearchProductsRequest").removeHeaders("CamelHttp*")
    .setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
    .to("http4://" + preLiveBaseAPI + searchProductsUrl + "?apiKey=" + ApiKey
                    + "&bridgeEndpoint=true")
    .bean(Processor.class, "buildResponse").log(LoggingLevel.INFO, "Search products finished");

这只是创建一个RESTAPI端点,然后调用外部API并将请求发送回

弹簧DSL

<route id="GROUPS-SHOW">
    <from uri="jetty://0.0.0.0:8080/showGroups" />
    <log loggingLevel="INFO" message="Reqeust receviced service to fetch groups -> ${body}" />
    <to uri="direct:auditLog" />
    <process ref="TestProcessor" />
</route>

回答您的问题

到底是什么?答:这是一个实现企业集成模式的框架它如何与用Java编写的应用程序交互?答:-它可以与任何可用的协议交互,如http、ftp、amqp等它是与服务器一起使用的吗?答:它可以部署在像tomcat这样的容器中,也可以作为java进程独立部署这是一个独立的项目吗?答案:-可能。

希望有帮助

如果您了解企业集成模式,ApacheCamel是一个实现所有EIP的集成框架。

您可以将Camel部署为web容器中的独立应用程序。

基本上,如果您必须使用不同的协议和技术集成多个应用程序,那么可以使用Camel。

就像一条管道

From---->To

在两者之间,可以添加尽可能多的通道和管道。水龙头可以是任何类型的用于数据流和引导流的路线的自动或手动。

它支持并实现了所有类型和类型的处理。对于相同的处理,有很多方法,因为它有很多组件,每个组件也可以使用不同的方法提供所需的输出。

例如,文件传输可以使用移动或复制的文件类型,也可以从文件夹、服务器或队列中进行。

-from-->To
   - from-->process-->to
   - from-->bean-->to
   - from-->process-->bean-->to
   -from-->marshal-->process-->unmarshal-->to

从/到----文件夹、直接、seda、vm可以是任何内容