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

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

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

请解释一下骆驼是什么。


当前回答

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

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

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

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

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

希望这会有所帮助。

其他回答

创建项目描述不应该很复杂。

我说:

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

维基百科说:

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

看见这不难吧?

骆驼从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");
}

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

简而言之:

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

为了做到这一点:

1) 您可以开发定制程序来完成这项工作(可能会很耗时,很难理解,为其他开发人员维护)

2) 或者,您可以使用Apache Camel以标准化的方式来实现这一点(它已经为您开发了大多数连接器,您只需要设置它并插入逻辑-称为Process):

骆驼将帮助您:

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

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

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

到底是什么?

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组件进行处理,然后将结果发布给所有感兴趣的/注册的成员,以进行特定的股票更新。