ChatGPT解决这个技术问题 Extra ChatGPT

Apache Camel 到底是什么?

我不明白 Camel 到底是做什么的。

如果你能用 101 个字来介绍一下 Camel:

它到底是什么?

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

它与服务器一起使用吗?

它是一个独立的程序吗?

请解释骆驼是什么。


B
Basil Bourque

我用一种更容易理解的方式来描述这一点......

为了了解 Apache Camel 是什么,您需要了解什么是 Enterprise Integration Patterns

让我们从我们可能已经知道的内容开始:Singleton pattern、工厂模式等;它们只是组织解决问题的方法,但它们本身并不是解决方案。四人帮在出版他们的书时为我们其他人分析和提取了这些模式:Design Patterns。他们为我们中的一些人节省了巨大的精力来思考如何最好地构建我们的代码。

就像四人帮一样,Gregor Hohpe 和 Bobby Woolf 撰写了 Enterprise Integration Patterns (EIP) 一书,他们在其中提出并记录了一组新模式和蓝图,以便我们如何做到最好< /em> 设计基于组件的大型系统,其中组件可以在同一进程或不同机器上运行。

他们基本上建议我们将我们的系统构建为面向消息的——组件之间使用消息作为输入和输出进行通信,而绝无其他。它们向我们展示了一套完整的模式,我们可以从中选择并在我们的不同组件中实施,这些组件将共同构成整个系统。

那么什么是 Apache Camel?

Apache Camel 为您提供 EIP 的接口、基础对象、常用的实现、调试工具、配置系统和许多其他帮助程序,当您想要实现遵循 EIP 的解决方案时,这将为您节省大量时间。

MVC。 MVC 在理论上非常简单,我们可以在没有任何框架帮助的情况下实现它。但是好的 MVC 框架为我们提供了即用型的结构,并且在创建大型 MVC 项目时已经考虑到了您需要的所有其他“侧面”事物,这就是我们大部分时间使用它们的原因。

这正是 Apache Camel 对 EIP 的作用。对于想要实施其解决方案以遵循 EIP 的人们来说,这是一个完整的生产就绪框架。


这可能是这个问题的最佳答案。所有其他答案都与互联网上的所有其他文章一样令人困惑
EIP是关键。如果你不了解 EIP,你可能会像盲人和大象(骆驼)一样使用骆驼。 EIP - eaipatterns.com
这个答案 +50 - 从 EIP 简介开始,并将其与 GOF 和 MVC 和框架进行类比。从问题来看,看起来OP对EIP一无所知。在阅读此答案之前,我在同一条船上
此描述应添加到 Apache Camel 主页,因为它回答了问题,然后是一些。确切地说,他使用手写的 MVC 进行类比或使用“工具”来帮助完成这个答案,这让我有了一个理解,而无需在所需要的只是这个简洁的情况下遍历无休止的其他(有用的)链接回答。
一点点 EIP 问题:“多年来有许多库和框架来帮助集成。但企业集成模式背后的概念经常被转化为一些复杂的类层次结构或需要连接在一起的对象。 ,并且经常丢失初衷和模式。开发人员从此被迫专注于低级细节和一些复杂的类库 API,失去了更大的图景和模式。
K
Kawu

如果您有 5 到 10 分钟的时间,我通常建议人们阅读 Jonathan Anstey 的这篇Integration with Apache Camel。这是一篇写得很好的文章,简要介绍和概述了 Camel 的一些概念,并通过代码示例实现了一个用例。乔纳森在其中写道:

Apache Camel 是一个开源 Java 框架,专注于使开发人员更容易和更容易地进行集成。它通过提供: 所有广泛使用的企业集成模式 (EIP) 的具体实现连接到各种各样的传输和 API 易于使用的领域特定语言 (DSL) 将 EIP 和传输连接在一起

Camel in Action(Camel in Action, 2nd ed. is here)还有一个免费章节,在第一章介绍了 Camel。乔纳森是我和那本书的合著者。


Camel in Action 这本书是一本非常好的书,可以学习基础知识以及如何使用 Camel 的一些更复杂的功能。我强烈推荐它! (我绝不隶属于这本书或出版商)
@Clause 如果想在 mule ESB 和 Camel 之间进行选择。我对选择一个或另一个的贬低应该是什么
请参阅与 Camels 竞争对手的比较中的一些链接:camel.apache.org/articles.html
是的,它绝对可以用于连接微服务,毕竟它只是一个小的 Java 工具包/框架。 Camel in Action 第 2 版书有一整章介绍了 Camel 微服务。
“与 Apache Camel 集成”一文中的图像不再有效。以下是图像工作的存档版本的链接:web.archive.org/web/20171029104103/https://dzone.com/articles/…
D
Dave Jarvis

创建 project description 并不复杂。

我说:

Apache Camel 是与路由的消息传递技术粘合剂。它将消息传递起点和终点连接在一起,允许将消息从不同来源传输到不同目的地。例如:JMS -> JSON、HTTP -> JMS 或漏斗 FTP -> JMS、HTTP -> JMS、JSON -> JMS

维基百科说:

Apache Camel 是一个基于规则的路由和中介引擎,它使用 API(或声明性 Java 领域特定语言)提供基于 Java 对象的企业集成模式实现来配置路由和中介规则。特定领域的语言意味着 Apache Camel 可以在您的 IDE 中使用常规 Java 代码支持类型安全的路由规则智能完成,而无需大量的 XML 配置文件;虽然也支持 Spring 中的 XML 配置。

看?那不难吧?


Apache Camel 主页指的是这个线程......他们没有设法提供他们自己产品的简短功能说明。
这篇文章是一个很好的例子,建设性的批评和诚实的努力可以创造出崇高的文档。它是骆驼官方网站上的特色。但让我们保持建设性,并避免名称标签。文档作者和其他贡献者有时很难找到,他们值得我们尊重。顺便说一句 - 我们有许多 Java 编码标准......并以自豪和荣誉坚持下去......对于像 Wiki 和官方指南这样的媒体的文档标准怎么样?
它就像一个细粒度的反向代理吗?
现在,这就是我所说的清晰明了的答案。奇怪的是,接受的答案看起来像一个广告。 +1
现在是 2017 年,在 3 年的时间里,他们所做的只是承认他们自己的描述是流行语汤,并添加一个指向该线程的链接。他们甚至没有花时间将这个线程的摘要(甚至只是复制粘贴一些东西)添加到页面本身。我们得到的只是一个指向 SO 的链接。来吧,在某些时候你必须停止为这种态度辩护。
A
Andrejs

Camel 从 A 向 B 发送消息:

https://i.stack.imgur.com/r5Kfr.png

为什么要为此设计一个完整的框架?好吧,如果你有:

许多发送者和许多接收者

十几种协议(ftp、http、jms 等)

许多复杂的规则 仅向接收者 A 和 B 发送消息 A 以 XML 格式向接收者 C 发送消息 B,但对其进行部分翻译、丰富(添加元数据)和 IF 条件 X,然后也将其发送给接收者 D,但作为 CSV .

仅向接收者 A 和 B 发送消息 A

将消息 B 作为 XML 发送到接收器 C,但对其进行部分翻译,丰富它(添加元数据)和 IF 条件 X,然后将其也发送到接收器 D,但作为 CSV。

所以现在你需要:

协议之间的转换

将组件粘合在一起

定义路线 - 去哪里

在某些情况下过滤一些东西

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

https://i.stack.imgur.com/AoyyL.png

使用很酷的 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");
}

另见 thisthis 以及 Camel in Action(正如其他人所说,一本好书!)


作为菜鸟,这是此页面上唯一对我理解 Camel 所做的事情有任何意义的答案。谢谢。
R
Rory Hunter

简而言之:

当需要连接/集成系统时,您可能需要连接到某个数据源,然后处理这些数据以匹配您的业务需求。

为了做到这一点:

1)您可以开发可以做到的自定义程序(可能很耗时且难以理解,为其他开发人员维护)

2) 或者,您可以使用 Apache Camel 以标准化方式执行此操作(它已经为您开发了大部分连接器,您只需要设置它并插入您的逻辑 - 称为流程):

骆驼将帮助您:

使用任何来源/格式的数据 处理此数据 将数据输出到任何来源/格式

通过使用 Apache Camel,您将很容易理解/维护/将您的系统扩展到其他开发人员。

Apache Camel 是使用企业集成模式开发的。这些模式可以帮助您以一种好的方式集成系统:-)


这意味着其他开发人员也可以用另一种编程语言更改逻辑吗?
@JavaTechnical 给定消息传递模式 (EIP),您已经可以用不同的语言编写不同的组件,因为这些消息采用独立于语言的格式,例如 JSON。 Camel 提供了一个简单的框架来实现 EIP。这是基于我的理解。如果我错了,请纠正我。
D
DolphinJava

基于类比

将自己置于航空公司所有者(例如:美国航空公司、捷特航空公司)的立场上,可以很容易地理解基于骆驼的路线。

“您的航空公司”的目的是将“乘客”从一个“城市”“运送”到世界上的另一个“城市”。您使用来自不同“飞机公司”(如波音、空中客车、HAL)的飞机运送乘客。

您的航空公司使用出发城市的“机场”让乘客登机,并使用目的地城市的机场让他们下机。一名乘客可能“旅行”到多个城市,但他们必须经过机场才能在您航空公司的飞机和城市之间旅行。

请注意,从城市“离开”的乘客本质上是“到达”您航空公司的飞机。一名乘客“抵达”城市,实质上是离开飞机。由于我们站在航空公司所有者的立场上,因此“到达旅客”和“出发旅客”一词与我们基于城市视角的传统概念相反。

“出发”乘客和“到达”乘客使用每个城市的相同“机场”基础设施。机场为离境旅客提供“离境基础设施”,这与为到达旅客提供的“到达基础设施”不同。

由于您的航空公司在飞机内提供的各种“便利设施”,乘客可以在旅行时继续他们的活动。

最重要的是,您的航空公司还为“了解当地语言”等特殊待遇提供休息室设施,或者为您准备“旅行”。

让我们将上面使用的几个单词/短语替换为以下内容:

您的航空公司:阿帕奇骆驼

飞机公司:运输机制

您航空公司的飞机:Apache Camel 的底层运输机制

携带:路线

乘客:消息;

城市:系统;

机场:骆驼组件;

理解当地语言:类型转换;

离开:生产,生产

到达:消费,消费

行程:路线

设施:提供

替换单词后,您会得到以下内容:

“Apache Camel”的目的是将“消息”从一个“系统”路由到世界上的另一个系统。 Apache camel 使用不同的传输机制进行消息路由。

Apache Camel 使用“from”系统的“Camel based Component”获取消息,并使用“to”系统的“Camel based Component”删除它们。一条消息可能会路由到多个系统,但它们必须通过“基于骆驼的组件”在“Apache Camel 的底层传输机制”和系统之间传播。

请注意,从系统“产生”的消息本质上是“消耗”到 Apache Camel 的底层传输机制中。而系统所消费的消息,本质上是由“Apache Camel 的底层传输机制”产生的。

由于我们试图理解 Camel,因此我们必须从 Camel 的角度开始思考。因此,术语“消费者信息”和“生产者信息”的含义与我们基于系统视角的传统概念相反。

“生产者消息”和“消费者消息”使用相同的“基于骆驼的组件”编码基础设施。 “基于骆驼的组件”为“生产者消息”提供“生产者端点”,为“消费者消息”提供“消费者端点”。

消息在路由时可以由 Camel 处理。

在此路由之上,Camel 提供了特殊功能,例如“类型转换”等等……


很好的解释,易于阅读且易于记忆。我想知道跑道或飞行员的角色是什么,如果它们甚至存在于骆驼中。
很好的解释,特别是机场示例,请继续保持。如果您添加更多扩展术语和一点点代码示例将非常棒!谢谢
C
Crollster

在您尝试了解 Apache Camel 之前,您需要了解的一件事是企业集成模式。并非该领域的每个人都真正了解它们。虽然您当然可以阅读《企业集成模式》一书,但了解它们的更快方法是阅读类似于 Enterprise Application Integration 上的 Wikipedia 文章。

如果您已经阅读并理解了该主题领域,您将更有可能理解 Apache Camel 的目的

高温高压


S
Sunil

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

您可以将 Camel 作为独立应用程序部署在 Web 容器中。

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


K
Kai Wähner

另一个角度的定义:

Apache Camel 是一个集成框架。它由一些 Java 库组成,可帮助您在 Java 平台上实现集成问题。我的文章“When to use Apache Camel”中描述了这意味着什么以及它与 API 和企业服务总线 (ESB) 的区别。


R
Ravindra babu

它到底是什么?

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

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

看看这个 articleEIP pattern article

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

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

Java DSL - 使用 fluent builder 风格的基于 Java 的 DSL。

企业集成模式的故事围绕这些概念解决:

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

查看 Anirban Konar 撰写的 article,了解其中一个实时用例。

它与服务器一起使用吗?

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

它是一个独立的程序吗?

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

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


我想知道你为什么使用“轻量级”这个词。我的观察是 Apache Camel 实际上很重。
“实现所有企业集成模式”不正确:Because Camel implements many of the design patterns in the EIP book
我可以在 Apache Camel 中创建一个 http 端点,以便外部用户能够向该端点发送请求吗?我正在阅读 HTTP 组件,它说生产者 - 这是什么意思?
M
MMacD

计算中的大多数“新”事物根本不是真正的新事物,它们只是围绕着一些已经很好理解的事物的神秘包装。当它们难以理解时,通常是因为有人决定为不同的目的发明新的语言术语或殖民现有术语(一个很好的例子是 X 开发人员颠倒了“客户端”和“服务器”的含义。)

Camel 是一个基于 Java 的包装器/API,用于跨应用程序中间件。

中间件是在不共享共同语言或数据类型的实体之间提供解释服务的软件的总称。

这就是骆驼的本质。我们可以通过注意它提供 EIP 类型的中间件来充实描述。

它本身不提供中间件,因为它不知道应用程序需要通信的细节。但它提供了用于创建该中间件的不变部分的 API(创建起点、创建终点、创建开始和结束的条件等)

希望有帮助。


“计算中的大多数‘新’事物根本不是真正的新事物,它们只是对已经很好理解的事物的神秘包装。” <<<<我整个星期读过的最好的东西!
T
Tarun Varshney

这是另一个尝试。

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

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

就像编程中的设计模式一样,您拥有通用集成解决方案的企业集成模式。他们因 Gregor Hohpe 和 Bobby Woolf 的同名书而闻名。

尽管使用一个或多个 EIP 实现集成解决方案是完全可能的,但 Camel 尝试使用 XML、Java、Groovy 或 Scala 之一在您的代码库中执行此操作。

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

因此,Camel 是与其他 EAI 工具竞争的技术,可以更好地支持测试您的集成代码。由于领域特定语言 (DSL),代码很简洁。它甚至可以被商业用户阅读,而且它是免费的,可以让你更有效率。


N
Naveen Raj

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

大多数常见问题都有经过验证的解决方案,称为设计模式。消息传递的设计模式是企业集成模式 (EIP),它得到了很好的解释here。 Apache camel 帮助我们使用 EIP 实现我们的解决方案。

集成框架的优势在于它能够通过 EIP 或其他模式为我们提供便利、传输和组件的数量以及 Apache Camel 位居榜首的易于开发

每个框架都有自己的优势 Apache camel 的一些特殊功能如下。

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


D
David Goodwin

用简单的英语来说,camel 可以在没有太多样板代码的情况下完成(很多)事情。

只是为了给您一个视角,下面给出的 Java DSL 将创建一个 REST 端点,该端点将能够接受由产品列表组成的 XML,并将其拆分为多个产品,并使用它调用 BrandProcessor 的 Process 方法。只需添加 .parallelProcessing(注意注释掉的部分),它就会并行处理所有产品对象。 (产品类是 JAXB/XJC 从 XSD 生成的 Java 存根,输入 xml 被限制在其中。)这么多代码(以及很少的 Camel 依赖项)将完成过去需要 100 行 Java 代码的工作。

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.split(stax(Product.class))
/*.parallelProcessing()*/
.process(itemDeltaProcessor);

添加路由 ID 和日志记录语句后

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.routeId("Item-DeltaRESTRoute")
.log(LoggingLevel.INFO, "Item Delta received on Item-DeltaRESTRoute")
.split(stax(Product.class))
.parallelProcessing()
.process(itemDeltaProcessor);

这只是一个示例,Camel 不仅仅是 REST 端点。看看可插拔组件列表 http://camel.apache.org/components.html


C
Chetan Gowda

假设您创建了一家像亚马逊这样的电子商务公司,并且您只想专注于销售产品的策略/选择。与亚马逊送货车队不同,您无需自己处理将货物从卖家转移到仓库,而是在仓库中对其进行更改(如包装)并将其发送到其他城市和客户。您聘请了一家公司来完成所有这些工作,只需向他们提供您所有仓库位置、车辆类型、交货地点以及何时做什么的列表的信息。然后他们自己处理,那就是 Apache Camel。一旦你把东西交给他们,他们就会把东西从一端转移到另一端,这样你就可以自由地专注于其他事情了。


s
sa_nyc

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

它使用路由;这可以描述为:

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

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


K
Khader M A

Apache Camel 是一个用于企业集成的 Java 框架。例如:- 如果您正在构建一个与许多供应商 API 交互的 Web 应用程序,我们可以使用骆驼作为外部集成工具。我们可以根据用例做更多的事情。 Manning 出版物的 Camel in Action 是一本学习 Camel 的好书。集成可以定义如下。

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");

这只是为了创建一个 REST API 端点,该端点又调用外部 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>

来回答你的问题

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

希望能帮助到你


c
cwash

101字介绍

Camel 是一个具有一致 API 和编程模型的框架,用于将应用程序集成在一起。 API 基于 Enterprise Integration Patterns 中的理论 - 即一组倾向于使用消息传递的设计模式。它提供了大多数这些模式的开箱即用实现,并且还附带了 200 多种不同的 components,您可以使用它们轻松地与各种其他系统通信。要使用 Camel,首先在 POJO 中编写业务逻辑并实现以消息为中心的简单接口。然后使用 Camel 的 DSL 创建“路由”,它们是将应用程序粘合在一起的规则集。

扩展介绍

从表面上看,Camel 的功能可以与传统的企业服务总线产品相媲美。我们通常认为 Camel Route 是一个存在于服务器端的“中介”(又名编排)组件,但由于它是一个 Java 库,它很容易嵌入,它也可以存在于客户端应用程序中并帮助您集成它带有点对点服务(又名编排)。您甚至可以使用在 Camel 路由中处理消息的 POJO,并轻松地将它们分离到自己的远程消费者进程中,例如,如果您只需要独立扩展一个部分。您可以根据需要使用 Camel 通过任意数量的不同远程传输/协议连接路由或处理器。您需要一种极其高效且快速的二进制协议,还是一种更易于阅读且易于调试的二进制协议?如果你想转行怎么办?使用 Camel,这通常就像在您的路线中更改一两行并且根本不更改任何业务逻辑一样简单。或者您可以同时支持两者——您可以在 Camel 上下文中一次自由地运行多条路线。

对于将存在于单个进程或 JVM 中的简单应用程序,您实际上并不需要使用 Camel - 这将是矫枉过正。但从概念上讲,它并不比您自己编写的代码更难。如果您的需求发生变化,业务逻辑和粘合代码的分离使得随着时间的推移更容易维护。一旦您学习了 Camel API,就可以像瑞士军刀一样轻松使用它,并在许多不同的环境中快速应用它,以减少您必须编写的自定义代码的数量。您可以学习一种风格 - 例如 Java DSL,一种易于链接在一起的流畅 API - 并轻松掌握其他风格。

如果您正在尝试做微服务,总体而言,Camel 非常适合。我发现它对于进化架构非常宝贵,因为您可以推迟许多关于协议、传输和其他系统集成问题的困难、“容易出错”的决策,直到您对您的问题领域有更多了解。只需关注您的 EIP 和核心业务逻辑,并在您了解更多信息时切换到具有“正确”组件的新路由。


S
Souciance Eqdam Rashti

是的,这可能有点晚了。但是要添加到其他所有人的评论中的是,Camel 实际上是一个工具箱,而不是一套完整的功能。在开发和需要进行各种转换和协议转换时,您应该牢记这一点。

Camel 本身依赖于其他框架,因此有时您还需要了解这些框架,以便了解哪个最适合您的需求。例如,有多种方法可以处理 REST。起初这可能会让人有些困惑,但是一旦您开始使用和测试,您就会感到轻松,并且您对不同概念的了解也会增加。


M
Midhun Pottammal

Apache Camel 是一个轻量级的集成框架,它实现了所有的企业集成模式。您可以使用所需的模式轻松集成不同的应用程序。您可以使用 Java、Spring XML、Scala 或 Groovy。

Apache Camel 在 Java 虚拟机 (JVM) 上运行。 ... Apache Camel 的核心功能是它的路由引擎。它根据相关路由分配消息。路由包含流和集成逻辑。它是使用 EIP 和特定的 DSL 实现的。

https://i.stack.imgur.com/NdL2x.jpg


Camel 实现了 40 模式,在 EIP 中:企业集成模式。
“实现所有企业集成模式”不正确:Because Camel implements many of the design patterns in the EIP book
j
javalearner_heaven

它就像一个管道连接

From---->To

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

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

例如,文件传输可以在骆驼中完成,文件类型为移动或复制,也可以从文件夹、服务器或队列中完成。

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

From/to----文件夹,direct,seda,vm可以是任何东西


i
izilotti

另一种观点(基于更基础的数学主题)

最通用的计算平台是 Turing Machine

图灵机有问题。所有输入/输出数据都保留在图灵机内。在现实世界中,我们的图灵机外部存在输入源和输出接收器,并且通常由我们无法控制的系统控制。也就是说,那些外部系统将使用任何所需的数据调度程序以任何格式随意发送/接收数据。

问题:我们如何设法使独立的图灵机以最通用的方式相互交流,以便每个图灵机将其对等方视为输入数据的源或输出数据的接收器?

答:使用像骆驼、骡子、BizTalk 或任何其他 ESB 之类的东西来抽象完成不同的“物理”(或虚拟软件)图灵机之间的数据处理。