Apache ServiceMix是小巧的开源集成容器,它结合了Apache ActiveMQ、Camel、CXF和Karaf的特性和功能到一个强大的运行平台,你可以用它构建属于自己的集成解决方案。它提供了一个由OSGI技术支持的全面的企业预备ESB。

其主要特性(features)包括:

  • 基于Apache ActiveMQ的可靠消息
  • 基于Apache Camel的消息、路由和EIP(Enterprise Integration Patterns)
  • 基于Apache CXF的WS-*和RESTful web服务
  • 由Apache Karaf技术支持的基于OSGI的服务运行环境。

通过另外可安装的特性(features),ServiceMix也支持:

  • Activiti的BPM引擎
  • Apache OpenJPA的完整的JPA支持
  • Apache Aries的XA事务管理
  • 仍旧支持JBI标准(在ServiceMix 3.x系列之后已废弃),通过Apache ServiceMix NMR来支持,Apache ServiceMix NMR包含了丰富的Event、Messaging和Audit API。

构建ServiceMix应用方式主要有OSGI Blueprint,OSGI声明式服务和Spring DM(legacy)。可以看到对于一些常见的基础标准常见,直接使用Bludeprint配置文件即可以完成配置。

ServiceMix的官方网站地址为: http://servicemix.apache.org/  。 其下载和安装部署也相对简单,在下载完成后,可以直接通过QuickStart里面的例子对ServiceMix的基础功能进行熟悉,以最简单的两个文件目录文件集成传输为例来进行说明如下:

首先是需要编写BluePrint.xml的配置文件,具体如下:

由于ServiceMix本身是基于OSGI和Karaf的组件化热部署框架,因此在配置文件开发完成后,只需要将该配置文件拷贝到Deploy目录下即可以完成该文件路由服务的部署。在部署完成后的服务运行后,我们将文件拷贝到camel/input目录下,可以看到文件会被传输和包括到output目录下。

对于具体部署的日志和状态可以通过   log:display 命令进行显示。

对于ServiceMix本身也提供另一个简单WebConsole端,可以通过:
>>features:install webconsole

进行Console管理端的安装,安装完成后通过 http://localhost:8181/system/console 地址访问,以smx/smx进行登录,登录后可以看到当前安装的组件本身的状态,可以查询总线运行相关的服务日志信息。

当前ServiceMix的版本为6.1版本,虽然仍然有对JBI规范的支持,但是也可以看到其核心已经转换为Camel,ActiveMQ和CXF三个核心开源组件的集成。同时基于Karaf实现的OSGI运行环境和容器。Karaf作为一款成熟而且优秀的OSGi运行环境以及容器已经被诸多Apache项目作为基础容器。

对于ServiceMix本身由于重点是在ESB服务运行引擎和开源组件的集成,因此可以看到在SOA治理管控,可视化的服务设计和开发方面都相对欠缺。而且当前ServiceMix相关的文档资料极少,实际在企业应用的场景也不多,如果要学习ServiceMix其核心需要学习的内容还是基于Camel的集成,消息中间件和CXF服务化框架,这三者本身是ServiceMix的基础。

对于服务开发中存在的个性化规则和逻辑的处理,ServiceMix提供了足够的开放性和灵活性,可以通过Eclipse环境进行plugin插件开发,开发完成的插件可以直接部署到deploy目录中。

在JBOSS Fuse ESB被红帽收购了做了较大的整合和商用化,即推出了JBOSS FUSE ESB引擎和基于JBOSS Developer Editon的服务可视化设计和开发。该ESB引擎本身仍然是基于Camel底层的可视化设计和实现,通过设计器的协助可以更加快速和高效的配置和开发ESB服务。

ESB在JAVA领域主要有两种标准,一种是Sun提供的JBI业务集成规范,一个则是由BEA和IBM提出的SCA/SDO标准。可以看到对IBM和Oracle的ESB平台基本采用的是SCA/SDO的标准。而对于开源的ESB如ServiceMix,JBOSS ESB等更多则是基于JBI规范进行实现。

最后在简单说明下OSGI和JBI规范

OSGi(Open Services Gateway Initiative,开放服务网关协议)提供了一个面向服务组件的编程模型,基于 OSGi 编程,具有模块化,标准化,面向服务,动态性,易复用,易扩展,易部署等诸多优点。

OSGi 带来了规范化的模块划分,低耦合的模块间关系,统一的模块开发方式,可动态插拔的模块管理环境。开发 OSGi 应用程序的第一步是在需求分析的基础上进行精心的模块划分,模块划分的原则是尽量保持单个模块的独立性,使模块与模块之间的耦合降到最小,每一个模块暴露给其它模块的信息最少,尽量让模块之间使用 OSGi 框架提供的服务注册机制来通信。一般可采用一个模块一个 Bundle 的方式,并为每一个 Bundle 在 Eclipse 环境中建立一个 Project 来进行开发,由于模块与模块之间的耦合很小,各个 Bundle 之间并不会象传统的开发方式中的各模块之间那样存在纠缠不清的包和类的引用关系,因此大部分Bundle的开发工作可以并行进行而不会互相影响。

JBI的本质是一种服务总线思想。JBI的目标是创建一个用于各种Java组件服务集成的运行环境。JBI容器以一种可插拔的方式集成不同类型的服务,而不是通过编写客户端代码来实现服务的集成。目前流行的服务容器有Servlet容器、EJB容器、JMS容器。
 
  1. Servlet容器只能处理以HTTP/SOAP协议传输的消息(接收与响应);
  2. EJB容器只能处理RMI协议传输的消息;
  3. JMS容器则处理的是JMS协议传输的消息;

它们之间无法进行通讯,如果想集成上面不同类型的容器服务,则必须有一种能融合以上不同容器的 新容器出现。JBI就是基于解决这种问题的思路出现的,JBI提供了各种各样的容器绑定组件(Binding Component,称BC),BC专门负责接收各种各样的传输协议的消息与发送请收消息给外部容器。当然JBI还提供其它的功能,要不这纯属一种代理 了,就没什么意义;

JBI提供处理各种业务的组件(即Service Engines组件,称SE)的消息,比如接收到HTTP的消息后需要转发给外部组件EJB,则需要SE组件来进行转换(更准确的说是Transform SE组件)。其实BC与SE之间是无法直接通信的,所有的消息都是通过传输通道(Deliver Channel)传送到NMR(Normalized Message Router),再由NMR通过DC将信息转到SE或BC的。

开源ESB-ServiceMix服务总线相关推荐

  1. 万字长文解析:分布式架构、SOA、微服务架构、API网关、ESB服务总线架构之间的关联及演进

    1架构演进 架构十五年:改变的是形态,不变的是目的 业务驱动架构形态变化 过去十几年,随着互联网发展以及业务的多样化,系统的架构也在不断发生变化,总体上来说大体经历了从单体应用架构-垂直应用架构-分布 ...

  2. SOA ESB 微服务 浅析

    SOA架构解析 SOA 全称是: Service Oriented Architecture,中文释义为 "面向服务的架构",它是一种设计理念,其中包含多个服务, 服务之间通过相互 ...

  3. .Net开源 Shuttle(飞梭)服务总线(ESB)入门

    Shuttle(飞梭)服务总线是一个免费的.NET开源软件项目,它为开发面向消息的事件驱动架构(EDA)系统提供了一种新方法.尽管它仍处于起步阶段,不过它已被应用于生产系统之中. 相关要点如下: 用C ...

  4. 现有一些开源ESB总线的比较

    现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. 一. ...

  5. 几款流行开源ESB总线简介

    现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...

  6. 现有一些开源ESB总线的比較

    现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,如今已经是百花争鸣的景象了.如今我就对现有的各种开源ESB总线根据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. 一. ...

  7. 几款开源ESB总线的比较

    现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...

  8. wso2 esb_使用WSO2 ESB构建制造服务总线(MSB)

    wso2 esb 在进入本主题之前,我想介绍一些制造业中常用的术语. 制造执行系统(MES)一词是AMR Research在1990年提出的,从先进的制造计算机信息系统的发展到现在,MES概念已经发展 ...

  9. 使用WSO2 ESB构建制造服务总线(MSB)

    在开始讨论本主题之前,我想介绍一些制造业中常用的术语. 术语制造执行系统(MES)由AMR Research于1990年提出,从先进的制造计算机信息系统的发展,MES概念已经发展了近三十年. 以下是制 ...

  10. .net中调用esb_大型ESB服务总线平台服务运行分析和监控预警实践

    今天准备谈下ESB总线平台建设项目中的服务运行统计分析,服务心跳监测,服务监控预警方面的设计和实现.可以看到,在一个ESB服务总线平台上线后,SOA治理管控就变得相当重要,而这些运行监控分析本身也是提 ...

最新文章

  1. Guice系列之用户指南(七)
  2. 使用 read_graphviz 将 GraphViz Dot 文本图加载到 BGL adjacency_list 图的简单示例
  3. Redis集群-哨兵模式
  4. Springboot微服务开发教程系列:开发入门
  5. 《Python Cookbook 3rd》笔记(5.16):增加或改变已打开文件的编码
  6. HBase使用场景和成功案例 (转)
  7. MySQL5.5.27使用Restore From SQL Dump功能导入数据库表中出现Row size too large
  8. 详细讲解大型数据库的设计原则与开发技巧
  9. 自己的电脑netassist软件(其他上位机软件同理)建立的虚拟TCP服务器其他客户端连不上??但客户端能连接WiFi。
  10. 俄勒冈健康与科学大学计算机,GE 医疗合作俄勒冈健康与科学大学,赋能虚拟ICU...
  11. 浅谈电弧光保护在10kV变电站高压室的应用方案
  12. 关闭 Gatekeeper
  13. [小说连载]张小庆,在路上(19)- 真的要在北京吗
  14. CGAN模型——pytorch实现
  15. spring hateoas初体验
  16. 【计算机视觉实验五】图像检索与识别
  17. 移动硬盘分区格式变为RAW的解决办法
  18. webpack:两小时极速入门
  19. 实景三维模型色彩差异大,用模方与DasViewer直接对模型调色
  20. 农行c语言笔试题,中国农业银行总行计算机类笔试经验

热门文章

  1. 自从知道这4个带货方法后,在也不怕抖音带货没流量
  2. MAC 笔记本的快捷键和输入法切换(搜狗)
  3. 母亲节祝福html源码,有创意的母亲节祝福语大全
  4. T1089 三人行必有我师
  5. 基于双向流固耦合的Fluent dynamic mesh 学习笔记
  6. 抽样分布的形式与原有总体的分布和样本容量n的大小有关
  7. 打开GTA 5竟要跑19.8亿次if语句!黑客嘲讽R星代码烂,修改后直接省70%加载时间...
  8. C-COT代码运行----Matlab2018a运行matconvnet深度卷积网络
  9. oracle算加权平均的函数,如何用变异函数计算加权平均数?
  10. 工具 | IDEA 设置为护眼的豆沙绿