再熟悉下Apache Camel的组件

之前跟着学习的太庞大了,这个作者讲的也不错,当做简易化的复习了

Camel介绍:

       1.Camel是一个基于规则路由和中介引擎,提供企业集成模式的Java对象的实现,

          通过应用程序接口(或称为陈述式的Java领域特定语言(DSL))来配置路由和中介的规则。

          领域特定语言意味着Apache Camel支持你在的集成开发工具中使用平常的,类型安全的,

          可自动补全的Java代码来编写路由规则,与那种复杂的XML配置相比极大简化了规则定义开发。

          同时,它也支持在Spring中使用XML配置定义路由和中介规则。

       2.Camel 采用URI来描述各种组件,这样你可以很方便地与各种传输或者消息模块进行交互

          其中包含的模块有 HTTP, ActiveMQ, JMS, JBI, SCA, MINA,CXF Bus API。

          这些模块是采用可插拔的方式进行工作的。

          Apache Camel的核心十分小巧你可以很容易地将其集成在各种Java应用中。

         目前Apache Camel作为一个路由以及媒介引擎可以与Apache ActiveMQ 、Apache CXF 、

          Apache MINA 、Apache ServiceMix项目集成。

         Camel提供的基于规则的路由(Routing)引擎,可以使用Camel定义的DSL语言,方便的定义出各种Routing。

         如下例:

               from(“file://xxxx").to("activemq://xxxx)将某文件,读入并写入到ActiveMQ的JMS中。

 

2.基本概念

   1.Endpoint

      Camel中的Endpoint类似webservice中的endpoint,即某个资源的位置。

     Camel使用URI来定位一个enpoint. 比如上例中的from(“file://xxxx”),

     可以是file:///edi/po/?include=.*\\.txt, 代表/EDI/PO/下的所有txt文件,即为一个endpoint。

  2.Component

      Camel的内置组件(用户也可以按照Camel的接口约定,

      来定义自己的component),用以提供对某种协议的资源访问的支持,

      如上例中的file即为component, 其提供了对本地文件系统访问的支持,

      activemq是另一个component, 提供了camel访问以ActiveMQ实现的JMS的直接访问能力。

  3.Routing Language

     Camel 提供了3种方式定义Routing,

            A. Java 语言兼容的DSL语言

                举例:

                    from("file:edifiles?include=.*\\.txt").to("smooks://classpath:smooks-config.xml") .

                    bean(wrapper, "wrap") .to("activemq:queue:tempQ")

                    end();

               说明:此例子中,是读取edifiles文件夹下的所有txt文件,然后路由至smooks组件,

                          smooks是一个文件转换组件,完成后,调用bean组件,

                          bean是一个可以调用用户自己定义的POJO的组件,完成后,

                          通过activemq组件,路由至一个名为tempQ的JMS队列。

                 注:该语法是java兼容的,可以正常在Eclipse等Java IDE中编辑并编译。

            B. Spring语法兼容的XML配置文件

                 <route>

                      <from uri="file://inputdir/"/>

                      <convertBodyTotype="java.lang.String"/>

                     <to uri="activemq:queue:tempQ "/>

                 </route>

               此例子中,读取inputdir文件夹下的文件,然后转换成String,写入名为tempQ的JMS队列。

           C. ScalaDSL

 

3.项目主页:http://www.open-open.com/lib/view/home/1340807942296

 

学习来源:https://www.open-open.com/lib/view/open1340807942296.html

 

再熟悉下Apache Camel的组件

上一篇:.NET内存使用-一个餐厅类比


下一篇:Tomcat 配置 https 协议