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

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

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

请解释一下骆驼是什么。


当前回答

这是另一个尝试。

你知道有很多东西,比如Webmethods、ICAN Seebeyond、Tibco BW、IBM Broker。他们都为企业中的集成解决方案提供了帮助。这些工具通常被称为企业应用程序集成(EAI)工具。

大多数拖放工具都是围绕这些技术构建的,在某些情况下,您必须用Java编写适配器。这些适配器代码要么未经测试,要么测试工具/自动化较差。

就像编程中的设计模式一样,您也有用于通用集成解决方案的企业集成模式。他们因格雷戈里·霍普(Gregor Hohpe)和鲍比·伍尔夫(Bobby Woolf)的同名书而出名。

虽然很可能实现使用一个或多个EIP的集成解决方案,但Camel尝试使用XML、Java、Groovy或Scala之一在代码库中实现这一点。

Camel通过其丰富的DSL和路由机制支持本书中列出的所有企业集成模式。

因此,Camel是其他EAI工具的竞争技术,为测试集成代码提供了更好的支持。由于使用了领域特定语言(DSL),代码简洁。即使是商业用户也可以阅读它,它是免费的,让您更有效率。

其他回答

从另一个角度定义:

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

到底是什么?

ApacheCamel是一个轻量级集成框架,它实现了许多企业集成模式。您可以使用所需的模式轻松地集成不同的应用程序。

您可以使用Java、SpringXML、Scala或Groovy。几乎所有你能想到的技术都是可用的,例如HTTP、FTP、JMS、EJB、JPA、RMI、JMS、JMX、LDAP、Netty等。

看看这篇文章和EIP模式文章

它如何与用Java编写的应用程序交互?

Camel使用Java域特定语言或DSL以各种域特定语言(DSL)创建企业集成模式或路由,如下所示。

Java DSL-一种基于Java的DSL,使用流畅的构建器风格。

企业集成模式的故事围绕以下概念展开:

消息、端点、生产者、消费者、路由、总线、转换和过程。

看看Anirban Konar的这篇文章,了解其中一个实时用例。

它是与服务器一起使用的吗?

它充当跨多个企业子系统的桥梁。

这是一个独立的项目吗?

ApacheCamel是一个集成框架,它集成了不同的独立应用程序。

Camel的主要优势:您可以通过对每个集成使用相同的概念,将不同的应用程序与不同的技术(和不同的协议)集成。

Camel有助于路由、转换和监控。

它使用Routes;其可以描述为:

当服务总线接收到特定消息时,它将通过任何服务/代理目的地(如队列/主题)将其路由。这条路径称为路线。

例子:您的股票应用程序得到了分析师的一些输入,它将通过应用程序/web组件进行处理,然后将结果发布给所有感兴趣的/注册的成员,以进行特定的股票更新。

就像一条管道

From---->To

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

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

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

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

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

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进程独立部署这是一个独立的项目吗?答案:-可能。

希望有帮助