我不理解Camel到底是做什么的。
如果你能用101个字简单介绍一下Camel:
- 它到底是什么?
- 它如何与使用Java编写的应用程序交互?
- 它是否需要和服务器一起使用?
- 它是一个独立的程序吗?
请解释一下Camel是什么。
我不理解Camel到底是做什么的。
如果你能用101个字简单介绍一下Camel:
请解释一下Camel是什么。
我尝试以更易懂的方式描述这个...
为了理解Apache Camel,你需要先理解企业集成模式是什么。
让我们从我们可能已经知道的开始:单例模式、工厂模式等。它们只是组织问题解决方案的方法,但它们本身并不是解决方案。这些模式是由四人帮在他们出版的书《设计模式》中分析和提取的,他们为我们节省了大量思考如何最佳地构建代码的精力。
与“四人帮”类似,Gregor Hohpe和Bobby Woolf编写了书籍《企业集成模式》(EIP),其中他们提出和记录了一组新的模式和“蓝图”,以最佳设计基于大型组件的系统,其中组件可以在同一进程或不同计算机上运行。以MVC为例。MVC在理论上非常简单,我们可以在没有任何框架帮助的情况下实现它。但是好的MVC框架为我们提供了准备就绪的结构,并且已经考虑了创建大型MVC项目时需要的所有其他“附加”事项,这就是为什么我们大多数时候使用它们的原因。
这正是Apache Camel用于EIP的目的。它是一个完整的、可投入生产的框架,适用于想要按照EIP实现其解决方案的人们。
此外,《Camel in Action》也提供了一章免费内容,第一章介绍了Camel。Jonathan是我在该书中的合著者之一。请注意,第二版已经出版,您可以在这里找到它。Apache Camel是一个开源的Java框架,专注于使集成更易于开发人员使用和接近。它通过提供以下内容来实现:
- 所有广泛使用的企业集成模式(EIPs)的具体实现
- 与各种传输和API的连接性
- 易于使用的领域特定语言(DSL),将EIP和传输连接在一起
创建一个项目描述不应该很复杂。
我这样说:
Apache Camel是一种消息技术粘合剂,具有路由功能。它将不同来源的消息传输到不同的目标地点,从而连接起始点和终止点。例如:JMS-> JSON,HTTP-> JMS或漏斗形FTP-> JMS,HTTP-> JMS,JSON-> JMS。
维基百科说:
Apache Camel是一种基于规则的路由和中介引擎,它提供了使用API(或声明性Java领域特定语言)配置路由和中介规则的Java对象实现企业集成模式。领域特定语言意味着Apache Camel可以支持您的IDE中使用普通Java代码进行路由规则的类型安全智能完成,而无需大量XML配置文件;但也支持Spring中的XML配置。
明白了吗?这并不难吧?
Camel将消息从A发送到B:
为什么需要一个完整的框架?因为您可能会遇到以下情况:
ftp
,http
,jms
等)。现在您需要:
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");
}
简而言之:
当需要连接/集成系统时,你可能需要连接到某些数据源,然后处理这些数据以满足你的业务要求。
为了实现这一点:
1)你可以编写自定义程序来完成它(可能耗时且难以理解、维护),
2)或者,您可以使用 Apache Camel 以标准化的方式完成它(它已经为您开发了大多数连接器,只需设置并插入您的逻辑-称为 Process):
Camel 将帮助你:
使用 Apache Camel,可以使其他开发人员更容易理解/维护/扩展您的系统。
Apache Camel 是根据企业集成模式开发的。这些模式可以帮助你以良好的方式集成系统 :-)
基于类比的思想,Camel路由可以更好地理解为处于航空公司所有者的角度(例如:美国航空公司、捷特航空)。
你的航空公司的目的是从世界上一个城市‘搭载’‘乘客’到另一个城市。你使用来自不同‘飞机制造商’如波音、空客和HAL的飞机来运输乘客。
你的航空公司会使用始发城市的‘机场’登机乘客,并在目的城市的机场下机。乘客可能会前往多个城市,但无论何时,他们都必须通过机场在你的航空公司的飞机和城市之间旅行。
请注意,离开城市的乘客实质上是进入了你的航空公司的飞机,而抵达城市的乘客则是离开飞机。由于我们身居航空公司的业主角色,因此“到达乘客”和“离开乘客”的术语与我们基于城市视角的常规概念相反。
每个城市使用相同的‘机场’基础设施来为出发和到达的乘客提供服务。机场为出发乘客提供“出发基础设施”,与为到达乘客提供的“到达基础设施”不同。
乘客可以在旅行时借助你的航空公司提供的各种‘便利设施’继续进行日常活动。
除此之外,你的航空公司还提供休息室设施,用于特殊治疗,例如‘了解当地语言’或为‘出行’做准备。
让我们用以下词汇替换上述内容:
你的航空公司:Apache Camel
飞机制造商:传输机制
你的航空公司的飞机:Apache Camel的底层传输机制
搭载:路由
乘客:消息;
城市:系统;
机场:Camel组件;
了解当地语言:类型转换;
出发:产生,已产生
到达:消耗,已消耗
出行:路由
便利设施:提供
替换单词后的内容如下:
Apache Camel的目的是路由从世界上一个‘系统’到另一个‘系统’的‘消息’。Apache Camel使用不同的传输机制进行消息路由。
Apache Camel使用‘基于Camel的组件’从‘from’系统中接收消息,并使用‘to’系统的‘基于Camel的组件’将它们放置。一条消息可以路由到多个系统,但是无论何时,他们都必须通过‘基于Camel的组件’在‘Apache Camel的底层传输机制’和系统之间旅行。
请注意,从系统中“产生”的消息实质上是被消费进入了Apache Camel的底层传输机制中。而被系统消耗的消息实质上是由“Apache Camel的底层传输机制”产生的。
我们试图理解骆驼,因此从骆驼的角度思考。因此,“消费者消息”和“生产者消息”的术语含义与我们基于系统角度的传统概念相反。在你尝试理解Apache Camel之前,你需要了解企业集成模式的相关知识。该领域并不是每个人都知道的。虽然你可以阅读《企业集成模式》这本书,但更快速熟悉他们的方法是阅读类似于维基百科上企业应用集成 的文章。
当你阅读并理解这个主题后,你会更容易理解Apache Camel的目的。
希望对你有所帮助。
另一个角度的定义:
Apache Camel 是一个集成框架。它由一些Java库组成,可以帮助您在Java平台上实现集成问题。这意味着什么以及与APIs和企业服务总线(ESB)相比如何不同,在我的文章"何时使用Apache Camel"中有描述。