`

Servicemix,Karaf和Camel

    博客分类:
  • esb
阅读更多

转自:http://www.verydemo.com/demo_c143_i3241.html

Servicemix是一个基于JBI规范的ESB,从Servicemix4开始全面支持OSGI,所谓全面支持是指不仅Servicemix4本身是基于OSGI framework和OSGI Bundle来实现,而且在Servicemix4上跑的应用也是由OSGI Bundle来构成的。而目前有很多J2EE应用服务器本身是基于OSGI来实现,但在这些应用服务器上跑的应用则是传统架构的。 
        
          Servicemix(以下我们讨论的Servicemix均指Servicemix4)是由集成了多个开源项目的“综合性”项目,主要包括Karaf、Camel、ActiveMQ等等。 

         其中Karaf是Servicemix的核心,Karaf是一个OSGI的运行时平台,其它的几个项目都是在Karaf的平台上运行的。实际上,Karaf最初就是从Servicemix项目中,将内核部分分离出来成为一个独立的Apache开源项目的。但Karaf不是一个OSGI framework,它需要真正的OSGI framework(例如Felix、Equinox等)的支撑,才能运作,通过集成这些OSGI framework,Karaf具有OSGI framework的功能,而且在这个提供了: 
         Logging:日志服务 
         Console:Shell控制台和Web控制台 
         Deployer & Provisionning:提供一些必要的运行时支撑库,可支持Bundle的fileinstall、OBR、features等应用热部署功能。 
         Admin:提供动态配置管理、操作系统集成、Karaf实例管理、Bundle生命周期管理等等管理功能。 
         JAAS-based Security Framework:基于JAAS的安全认证框架。 
         Blueprint:对象和服务的依赖注入框架(通过集成Aries Blueprint Container实现)。 
         ... ... 

        很多直接基于OSGI framework来运行应用的OSGI初学者都因为要实现以上基础功能而感觉入门门槛极高。所以,Karaf实际上是将一些OSGI应用所需的一些基础性的功能实现了,供上层应用使用。它大大降低了运行OSGI应用的入门门槛。 

        接着就是Camel项目了。Camel是一个强大的集成框架,它是EIP(Enterprise Integration Pattern企业集成模式)的一个具体实现框架。Camel可以支持用基于Java API、blueprint(或spring)、Scala DSL等方式来实现各种传输协议或消息的路由,充当这些协议或消息的交换媒介。说白点,就是负责这些不同的协议和消息之间的转换和路由工作,使两个支持不同协议的组件能够互相通讯,互相调用对方提供的服务,而这些正是ESB实现多系统间集成的核心。 
       
        Camel可以支持的协议几乎是无限的,例如:HTTP、CXF based Web Service、CXF based RESTful Web Service、Socket、JMS、FTP、Mail(smtp/pop3/imap)、RMI、SNMP、LDAP... ...。Camel是以URI的方式来统一对各种协议的支持。对每种协议,都开发了相应的Component。在Camel里,Component的概念就相当于一个支持解析和处理一种协议的实例的工厂,它在实际使用时,会产生相应的endpoint,endpoint就是这个解析和处理协议的实例,在Camel里,用URI的方式来代表这个endpoint。所以,我们可以在Camel的应用代码里看到各种各样的URI,例如: 

Java代码 复制代码 收藏代码
  1. jms:topic:stock-price    
  2.     
  3. mina:tcp://211.122.134.121:8100    
  4.     
  5. pop3://username@210.11.123.25:110    
  6.     
  7. rmi://localhost:3161/ServiceBean?remoteInterfaces=com.p.Service   
jms:topic:stock-price 
 
mina:tcp://211.122.134.121:8100 
 
pop3://username@210.11.123.25:110 
 
rmi://localhost:3161/ServiceBean?remoteInterfaces=com.p.Service 



      在JBI规范内,这些endpoint可分成绑定组件BC(Binding Component)和服务引擎SE(Service Engine)。作为 
BC的endpoint将协议转换成规格化消息NM(Normalized Message)或者将NM转换成对协议的调用。而SE的endpoint则负责处理NM,必要时产生新的NM。通过NMR(消息路由),SE的endpoint从上一个endpoint处获得NM并处理,还可以产生一个NM给下一个endpoint。 

      一个可能的应用场景:一套系统A原来是用socket的方式和另一套系统B互联,后来系统B做了升级,只提供了Web service的接口来提供服务,但系统A只能支持socket方式,那么系统A就可以通过socket和Camel-mina component的endpoint连接转成消息(NM),在Camel内再定义SE endpoint从这个消息中整理出调用系统B web service所需的数据,再通过一个Camel-cxf component的endpoint采用web service的方式调用系统B的web service,返回的结果又转成NM,再通过原来的Camel-mina endpoint以socket的方式回应系统A,这个过程是同步的。这样就实现了系统A和系统B的互联。 

      但在Servicemix4中,由于和OSGI融合得十分好,Servicemix4本身就是一个独立应用的运行时载体。所以ServiceMix4不是一个简单的ESB。所以在Servicemix4中,Camel的bean component是一个重要的角色,我们可以用OSGI bundle作为bean component,来实现我们需要的业务逻辑。这样,Camel就不只是充当异构系统之间互联的角色,而是成为应用本身的一个基础架构。 

     总而言之,Camel使Servicemix功能得到扩展,而Servicemix和karaf则使Camel变得更加模块化,提升了基于Camel的应用的复用水平。

分享到:
评论

相关推荐

    快速入门指南 中文版 ServiceMix4

    此外,ServiceMix还支持Karaf,一个基于OSGi的轻量级容器,提供命令行接口和管理功能,使得管理和维护ServiceMix更加简便。 5. **集成与扩展** ServiceMix允许用户集成各种服务,如JMS、Web服务、数据库等。它通过...

    serviceMix大合集

    在提供的“serviceMix大合集”中,你可能会找到关于如何设置和配置ServiceMix、如何创建和部署服务、如何利用Camel和CXF组件进行集成、以及如何管理和监控ServiceMix实例的详细文档。这些资料对于学习和使用...

    ServiceMix学习笔记

    然后,你需要掌握ServiceMix的命令行工具,如karaf shell,这是进行日常管理和部署的主要手段。 接下来,理解如何创建和部署服务单元至关重要。这涉及编写服务端点的代码,封装成符合JBI规范的服务单元,然后通过...

    camel cookbook

    他在FuseSource以及现在在Red Hat的工作经历,使他与Apache Camel、ActiveMQ、ServiceMix、Karaf和CXF等多个Apache项目的核心贡献者有过密切合作。 本书的出版信息表明,它由Packt Publishing Ltd在2013年首次出版...

    ws-demo.zip

    通过这个"ws-demo",学习者可以深入了解ServiceMix如何作为ESB来协调和管理Web服务,以及Camel如何帮助实现复杂的消息路由和转换。同时,这也是一个实际操作的机会,让开发者能够亲手实践并提升在ServiceMix环境中...

    apache-servicemix-4.4-fuseesb第三部分

    Apache ServiceMix 是一个基于 Java 的 ESB,它利用了诸如 Apache Camel、CXF 和 Karaf 等组件来提供强大的集成能力。而 Fuse ESB 可以视为 ServiceMix 的一个商业版本,由 Red Hat 提供支持,通常包含了额外的服务...

    apache-servicemix-4.4-fuseesb第四部分

    3. **Camel 组件**:Apache Camel 是 ServiceMix 和 Fuse ESB 中的关键组件,用于构建和执行复杂的路由规则。Camel 提供了丰富的组件库,可以方便地与各种协议和系统(如 HTTP, JMS, FTP, SFTP, SOAP 等)进行交互。...

    企业应用集成与开源ESB产品ServiceMix和Mule介绍

    –ServiceMix架构–ServiceMix组件概览–ServiceMix实战–Demo–Mule的工作机理–Mule组件概览–Mule实战–Demo–削弱了部门间的协作–影响资源的整合Point-to-PointsolutionHub-and-...Serv

    CAMEL核心开发指南

    - **Apache ServiceMix**:这是一个流行的分布式开源ESB(Enterprise Service Bus)和JBI(Java Business Integration)容器。 - **Apache ActiveMQ**:这是一个成熟的、广泛使用的开源消息代理。 - **Apache CXF...

    servicemix

    Apache ServiceMix是一个灵活的开源集成容器,它将Apache ActiveMQ,Camel,CXF和Karaf的特性和功能统一到一个功能强大的运行时平台中,可用于构建自己的集成解决方案。 它提供了由OSGi独家提供的完整的,企业就绪的...

    Fuse ESB 4.3.1使用笔记

    Fuse ESB (Enterprise Service Bus) 4.3.1 是一个强大的企业级服务总线平台,基于Apache Karaf容器构建,用于集成不同的应用程序和服务。它支持多种集成模式和技术栈,包括Camel、CXF等。 #### 二、安装与配置 ###...

    Camel-CXF-CXFRS-Demo

    例如使用 Apache ServiceMix 或 Apache Karaf。 您可以从其 shell 运行以下命令: osgi:install -s mvn:org.blogdemo/claimdemo/1.0.0-SNAPSHOT如需更多帮助,请参阅 Apache Camel 文档 http://camel.apache.org/

Global site tag (gtag.js) - Google Analytics