我不明白骆驼到底是干什么的。
如果你能用101个单词介绍一下骆驼:
到底是什么?它如何与用Java编写的应用程序交互?它是与服务器一起使用的吗?这是一个独立的项目吗?
请解释一下骆驼是什么。
我不明白骆驼到底是干什么的。
如果你能用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),代码简洁。即使是商业用户也可以阅读它,它是免费的,让您更有效率。
骆驼从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");
}
另请参阅《这和这》和《骆驼在行动》(正如其他人所说,这是一本优秀的书!)
另一种观点(基于更基本的数学主题)
最通用的计算平台是图灵机。
图灵机有问题。所有输入/输出数据都保存在图灵机内。在现实世界中,我们的图灵机外部有输入源和输出汇,通常由我们无法控制的系统控制。也就是说,这些外部系统将使用任何期望的数据调度器以任何格式随意发送/接收数据。
问题:我们如何使独立的图灵机器以最通用的方式相互交流,以便每个图灵机器将其对等机器视为输入数据源或输出数据汇?
答:使用骆驼、骡、BizTalk或任何其他ESB来抽象完成不同的“物理”(或虚拟软件)图灵机之间的数据处理。
如果您有5到10分钟的时间,我通常建议大家阅读Jonathan Anstey的《与Apache骆驼的集成》。这是一篇写得很好的文章,对Camel的一些概念进行了简要介绍和概述,并用代码示例实现了一个用例。乔纳森在信中写道:
ApacheCamel是一个开源Java框架,专注于使集成更容易,更易于开发人员访问。它通过提供:所有广泛使用的企业集成模式(EIP)的具体实现连接到各种传输和API易于使用的领域特定语言(DSL)将EIP和传输连接在一起
《行动中的骆驼》(Camel in Action,第二版)还有一个免费章节,在第一章中介绍了骆驼。乔纳森和我是那本书的合著者。
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进程独立部署这是一个独立的项目吗?答案:-可能。
希望有帮助