Mule介绍
什么是Mule
Mule是一个基于Java的轻量级消息框架,它可以使我们快速、容易地将我们的应用连接起来,并且保证这些应用间可以交换数据。Mule使用了面向服务架构(SOA),提供了对现有系统的简洁的集成方式。不管应用程序采用了什么技术,JMS、Web Service、JDBC、HTTP甚至其他的技术,Mule都可以准确无误地将它们集成到一起。
Mule框架具有很强的可扩展性,它允许我们开始只提供比较少的应用,然后再慢慢将更多的应用连接到其上。Mule透明地管理着应用和组件间的所有交互,不论这些应用和组件是处于同一台虚拟机上还是处在互联网上,不管他们底层使用了怎样的传输协议。
Mule是基于企业服务总线(ESB)的思想设计的。ESB的主要功能是扮演了在不同应用中传送数据的传输系统的角色让它们可以互相通信,不管这些应用是在内联网中还是跨越了互联网。现在市场上已经有几个商业应用的ESB产品,这些产品中许多只提供了有限的功能,或者是需要构件在已有的应用程序服务器或消息服务器之上,这就将你限制在了某个特定的提供商。Mule是一个中立的ESB产品,所以不同的提供商的产品都可以集成到其上,使用Mule,你不会被锁在某一个提供商的平台之上。
与竞争对手相比,Mule提供了很多优势,包括:
l Mule的服务组件可以是你想要的任意类型的。你可以很容易地把从POJO类到其他框架实现的组件的各种形式的应用集成起来。
l Mule和其ESB的模型提供了非常可观的组件重用。不同于其他框架,Mule可以让你不加修改地使用你现有的组件。这些组件不需要任何与Mule相关的代码,甚至编程接口(API)也不需要,就可以在Mule上运行。这样,业务逻辑和消息逻辑完全分离开来。
l 消息可以是从SOAP到二进制图像文件的任意类型。在设计上,Mule不会强制你使用任何设计约束条件,比如XML消息或者WSDL服务契约。
l Mule部署成多种拓扑结构,甚至可以不以ESB的方式进行部署。因为Mule是轻量级和嵌入式的框架,所以它可以很好地应对那些需要适应各种变化,并且按需求来增加和裁减功能的应用。在这种要求高可靠和可扩展性的系统中,Mule可以有效地减少部署时间,提高生产率。
MuleSource提供了管理工具,可以让你管理你的部署(Mule HQ),监视流过系统的事务(Mule Satum),控制系统的基础组件(Mule Galaxy)。在Mule管理部分将详细地介绍这些工具。
下一部分是理解消息框架,提供了对消息框架和Mule怎样在应用间进行数据交换的详细介绍。
理解消息框架
将你的应用联网的好处是一个应用可以发送数据给另一个应用。然而,许多应用并不具备从另一个应用读取或处理数据的能力。Mule提供了在多个应用间可以读取、转换和发送数据的消息框架来解决这一问题。简单说来,一个消息就是一包数据,这包数据可以在应用间通过一个特定的通道(或者队列)进行处理和发送。
最简单的情况下,当你把你的各种应用连接到Mule时,Mule会从一个应用中读取数据,为了数据可以被目标应用读取,Mule将其按照要求进行转换,然后把它发送给目标。这样,Mule就可以让你集成所有类型的应用,甚至那些不是为了做这个集成而构建的应用。
Mule是基于ESB思想的消息框架。ESB的主要功能是扮演了在不同应用中传送数据的传输系统的角色让它们可以互相通信,不管这些应用是在内联网中还是跨越了互联网。因此,系统的核心是在应用之间进行消息路由的消息总线。
Mule与传统ESB的一个不同之处在于,Mule仅仅是按照需要进行数据。传统的ESB上,你需要为连接到总线的每一个应用创建一个适配器,并将该应用的数据转换成单一的通用消息格式。这些适配器的开发和处理每个消息活动需要花费大量的时间和精力。Mule消除了对单一消息格式的要求。信息会被发送到任意的通信通道,比如HTTP或JMS,它只在沿途进行必要的转换。因此,相对于传统ESB,Mule提高了性能,减少了研发时间。
Mule的架构和术语使用了Gregor Hohpe和Bobby Woolf的合著Enterprise Integration Patterns:Building, and Deploying Messaging Solutions一书中描述的规范。对所有从事企业消息解决方案的人,这本书非常值得一读。
下一节理解Mule架构,更加详细地描述了Mule架构。
理解Mule架构
这一节描述了Mule架构的不同部分,它们是怎样处理消息的以及它们的数据。为了便于说明,这里使用了一个例子,这个实例中有一家公司,这家公司需要为顾客的订单开具发货清单,根据那些发货清单处理一些流程,并且将其送到商品库来完成订单。
1. 关于SOA
内容略
2. 数据处理
当消息被从一个应用(比如发货清单的入口系统)发送后,Mule取出消息,将它发送到一个服务中,这个服务会使用具体的业务逻辑处理这条消息,比如检查用户和数据库的存货清单,然后将消息路由到正确的应用中,比如订单执行系统。Mule包含了许多独立的部分,来处理的路由消息。服务的关键部分是服务组件(service component)。服务组件会执行消息中的业务逻辑,比如读取发货清单,向其中添加用户数据库里的信息,并且将其转发到订单执行系统。
服务组件的一个重要特性是它不需要任何Mule相关的代码;它可以简单的是POJO、Spring Bean、Java Bean,也可以是包含了具体处理数据的业务逻辑的Web Service。Mule需要来管理这些服务组件,将其打包并发布为服务,并保证正确的消息进入的输出,这些都要借助于你为这些服务指定的配置文件来完成。
在你的应用中,有许多不同的服务来处理不同的业务逻辑,比如一个服务用于验证发货清单中的货品是否有库存,另一个则是使用订单历史记录来更新一个分离的用户数据库。所以你的被消息封装着的发货清单,需要在服务组件间流动,直到整个处理流程结束。
下一节,在服务组件间路由消息,描述了Mule是怎样路由消息的。
3. 在服务组件间路由消息
按照前面的规定,服务组件包含了处理消息中的数据的业务逻辑,但它并不包含怎样进行消息接收和发送的任何信息。为了保证服务组件接收到正确的消息,并且在处理后对它们进行合适的路由,你需要在配置Mule时,为组件指定入站路由(inbound router)和出站路由(outbound router)来封装服务。
入站路由指定了一个服务组件要处理哪些消息,它可以过滤进入的消息,聚合消息,以及在将消息发送到服务组件前对它们进行重新排序。例如,如果一个服务服务订阅了一个RSS,入站路由就必须要知道来自那个提供者的消息。
服务组件处理完消息后,出站路由指定向哪里发送这条消息。你可以定义多个入站和出站路由约束,甚至将多个路由链接起来处理消息,来保证服务组件准确地按照要求来接收和发送消息。
下一节从业务逻辑中分离消息,介绍了怎样将服务组件是怎样与消息层进行分离的。
4. 从业务逻辑中分离出消息
Mule从多优势之一是它可以处理通过多种协议发送的消息。例如,一个发货清单可能总是XML格式的,但它也可能在一种情况下通过HTTP协议送达,另一种情况却又通过JMS消息,这依赖于生成清单的服务。如果一个服务组件仅仅处理业务逻辑,与数据协同进行工作,那它怎样读懂消息发送来的各种各样的格式的呢?
答案是服务组件不知道怎样读懂这些消息,因为默认情况下,服务组件被完全与消息格式隔离了开来。首先只由一类与协议相关的传输组件沿途运送消息,然后在路由器将消息发送到服务组件之前,转换器会将消息的有效负载(例如发货清单)按照需要转换成服务组件可以读懂的格式生。例如,如果一个XML发货清单通过HTTP协议发送,这条消息沿途将由HTTP传输组件运送,路由器引导这条消息到要对其进行处理的服务组件上,转换器就会根据服务组件的需要沿途转换发货清单,比如将其由XML转换为Java对象。所有的对消息的传输,转换以及路由对服务组件来都是完全透明的。
转换器是交换数据的关键,因为它们保证了Mule可以将数据转换成另一个组件或应用可以理解的格式。更重要的是,数据仅在需要的时候才会转换。不同于将所有的消息转换成单一的通用消息格式,消息和它的数据仅在它们正在被发往的目标组件需要时,才会被转换。最后一点,你可以使用多种传输组件来处理不同的通道,比如发送了一条基于HTTP协议的消息,然后在它被客户数据服务组件处理后,使用JMS消息将其转发。
将业务逻辑与发送和转换消息进行解耦,给应用带来了巨大的灵活性,这主要反映在两方面,你可以创建自己需要的架构,并且使你不必关心消息到达的多种格式,而更加简单地定制自己的业务逻辑。必要情况下,我们的服务组件可以直接处理消息的原始数据,当然这不是必需的。
下一部分,将所有绑定在一起,描述了Mule怎样将所有的组件连接起来,并协调它们之间的流的。
5. 将所有组件绑定在一起
端点(endpoint)是连接起所有服务的关键,它是一个配置元素。你可以在入站路由和出站路由中指定端点,来告诉Mule使用哪个传输组件,将消息发送到哪里,以及哪一个消息组件应该接收它。端点的主要部分是地址(address),它是使用统一资源标识符(URI)描述的,它指定了需要使用的传输组件,传输组件资源的定位和一些附加的参数。
举个例子,如果一个服务的入站路由指定了端点为http://myfirm.com/mule,HTTP传输组件就会把所有需要发送到这个URL的消息发送到这一服务。如果指定的是file://myserver/files/,那么文件传输组件就会监视这一目录,把所有这一目录中的新建文件发送到这一服务。在出站路由中指定端点指示了消息下一步去哪里——消息被发住的服务的入站路由需要与前一服务组件的出站路由相同,如下图所示。
一个服务可以使用不同的传输组件接收消息。你需要为一个服务要使用的每一种传输组件指定一个或多个的独立的端点。比如,如果你想让你的服务可以同时处理来自HTTP和JMS通道的消息,你应当需要在服务的入站路由里至少指定一个HTTP端点和至少一个JMS端点。Mule把这些端点登记在服务上,传输组件在运行期使用这些登记信息来配置自己,达到确定发送和接收消息的目的。
总的来说,Mule提供了简单、轻量级的方式来编写服务组件。这些服务组件可以处理数据,但它们不需要担心数据的发送和接收,消息的格式或者消息发送/接收使用的技术。尽管许多代理和集成技术提供了接入不同数据源的功能,但他们往往需要额外的代码来按照你想要的方式来获取消息,按照你指定的目的发送数据。Mule可以让你快速地开发服务组件,你可以使用简单的XML配置文件来修改它们的工作,而不需要写代码。
下一部分,理解逻辑数据流,讲述了一个详细的例子,来展示流过Mule各个部分的消息流。
理解逻辑数据流
前面的部分从概念的角度介绍了Mule的每个部分,现在,再使用发货清单的例子,来看一下数据流是怎样穿越Mule的各个部分的。完成这一过程的自始至终,Mule都是使用配置文件来确定要使用哪个服务组件、传输组件、路由器和转换器的。下面的图画出了这几步传输过程。
1. 用户在公司网站上发了一份订单,这一过程中,生成了一个XML格式的发货清单,并提交到了http://myfirm.com/orders。
2. HTTP传输组件接收到消息,用户数据服务入站端点被在http://myfirm.com/orders点工作,他在入站路由指定,消息必须包含一个Java对象,所以HTTP传输组件准备进行消息转换,并把消息转发到服务。
3. XML2Object转换器将XML发货清单转换成Java对象。
4. 传输组件将消息报发送到用户数据服务组件。
5. 用户数据服务组件查询主要的数据库,抽取与用户有关的附加数据,并将这些数据更新到发货清单中。
6. HTTP传输组件使用出站路由配置,确定了它现在必须将消息转发到http://myfirm/com/verify。
7. HTTP传输组件使用发货清单检查服务组件的入站路由配置接收消息,并将其转换到服务组件。
8. 服务组件使用仓库里的ID号更新了发货清单。仓库存有发货清单的所有有货的项目的信息。
9. 出站端点指定了一个JMS地址,所以JMS传输组件要将消息转送到定单执行应用中,该应用将使用JMS地址来取得订单。
现在你已经理解了Mule是怎样工作的,阅读下面的一节,将Mule集成到你的环境,你将学习到Mule所支持的部署选项和拓扑。
将Mule集成到你的环境
Mule是基于ESB架构思想的。ESB的消息骨架通常使用JMS实现,但是其他的消息服务器产品也可以使用,例如MSMQ、IBM WebSphere MQ(以前的版本叫MQSeries),或TIBCO Rendezous。另外,使用Mule时,并没有对你的集成工作层的工作方式的严格限定,你可以连接到EJB,大型应用,消息,Web Service,socket,甚至文件系统,与他们都可以进行简单一致的交互。
Mule还支持ESB以外的其他拓扑结构,包括管道方式、对等网、C/S、Hub-and-Spoke等等。这些拓扑可以混合使用,并且配合连接到一个企业服务网络(enterprise service network)中,完成复杂企业消息和服务需求的模型组建,如下图所示。
与Mule集成时,你可以以比较少的应用开始,而后慢慢连接更多的应用上去。例如,一个Mule使用者开始集成了六个系统,三年后,他们把多达71个的系统使用Mule连接了起来。Mule允许你开始时,根据需求从简定制,而后进行方便地持续扩展。
你可以在你的网络上部署多个Mule实例,如下图所示。这种方式对故障转移和负载均衡都非常有用,如果一个Mule实例由于服务器停止失效了,其他的Mule实现可以处理它的消息。你可以向一个实例发送一部分消息,而向另一个实例发送另一部分来均衡负载。
你可以多种方式部署每个Mule实例,单点方式,嵌入Web容器(比如tomcat),或者在应用程序服务器上。你可以使用私有的J2EE应用程序服务器,例如BEA WebLogic,IBM WebSphere,Oracle Application Server或者SunOne,也可以使用像Geronimo或JBoss这样的开源产品。
设计系统是一个艺术和科学并重的事情。系统必须正确的实现,并保证可扩展性。MuleSource专业的服务可以帮助你巩固你的架构,设计服务组件,或者所有的实现。联系MuleSource服务代理获取更多信息。
小结
Mule提供了可以使应用之间进行数据交换的消息框架。应用功能被包装成服务,这样的服务包含一个服务组件(用于处理数据的业务逻辑),路由器(使用端点来指定向哪里发送消息)和一些配置项。传输组件使用不同的通道在服务间传输消息,转换器沿途根据需要进行数据转换。
Mule不是现有的应用框架的替代产品。相反,Mule对一些开源的项目产生了影响,比如Apache CXF,Spring和ActiveMQ,填补了Java企业开发中对多平台中的多系统复杂交互这一需求的空白。Mule提供了以少量的工作就能完成将系统集成到一个强壮的,解耦合的环境中的方式,你甚至不用写代码,就能提供必需的系统间路由,传输以及转换消息的支持。
概述部分的主题是对Mule架构做一个介绍。现在阅读Getting Started部分可以获取如何下载、安装和开始使用Mule的信息。想知道根据你的角色你应当完成什么样的工作,赶快去阅读Quick Start吧。
<!--EndFragment-->
分享到:
相关推荐
### Mule 2.x Getting Started Guide 知识点解析 #### 一、Mule是什么? Mule 是一款基于 Java 的轻量级消息框架,旨在帮助开发者快速、便捷地连接各种应用程序,实现它们之间的数据交换。它支持多种技术栈,如 ...
### Mule 2.0 Getting Started Guide:ESB与J2EE环境下的集成服务 #### 概述 Mule 2.0是一个重要的版本更新,它不仅为开发人员提供了更加强大、灵活的服务总线(ESB)配置能力,还通过引入Spring框架进一步提升了...
- **Getting Started with Cloud Connect**: 介绍了如何开始使用Mule Cloud Connect来集成云端服务。 - **How to Build a Cloud Connector**: 提供创建自定义云连接器的指南,包括如何使用注解、如何在Eclipse或...
基于的手势识别系统可控制灯的亮_3
untitled2.zip
S7-1500和分布式外围系统ET200MP模块数据
anaconda配置pytorch环境
高校教室管理系统,主要的模块包括查看首页、个人中心、教师管理、学生管理、教室信息管理、教师申请管理、学生申请管理、课时表管理、教师取消预约管理、学生取消预约管理等功能。
半挂汽车列车横向稳定性控制研究:基于模糊PID与制动力矩分配的联合仿真分析在典型工况下的表现,半挂汽车列车在典型工况下的横向稳定性控制研究:基于模糊PID与制动力矩分配的联合仿真分析,半挂汽车列车4自由度6轴整车model,横向稳定性控制,在低附着系数路面,进行典型3个工况,角阶跃,双移线,方向盘转角。 采用算法:模糊PID,制动力矩分配,最优滑移率滑膜控制。 以上基于trucksim和simulink联合仿真,有对应 p-a-p-e-r参考 ,关键词: 1. 半挂汽车列车 2. 4自由度6轴整车model 3. 横向稳定性控制 4. 低附着系数路面 5. 典型工况(角阶跃、双移线、方向盘转角) 6. 模糊PID算法 7. 制动力矩分配 8. 最优滑移率滑膜控制 9. Trucksim和Simulink联合仿真 10. P-A-P-E-R参考; 用分号隔开上述关键词为:半挂汽车列车; 4自由度6轴整车model; 横向稳定性控制; 低附着系数路面; 典型工况; 模糊PID算法; 制动力矩分配; 最优滑移率滑膜控制; Trucksim和Simulink联合仿真; P-A-P-E-R参考
路径规划人工势场法及其改进算法Matlab代码实现,路径规划人工势场法及其改进算法Matlab代码实现,路径规划人工势场法以及改进人工势场法matlab代码,包含了 ,路径规划; 人工势场法; 改进人工势场法; MATLAB代码; 分隔词“;”。,基于Matlab的改进人工势场法路径规划算法研究
本文介绍了范德堡大学深脑刺激器(DBS)项目,该项目旨在开发和临床评估一个系统,以辅助从规划到编程的整个过程。DBS是一种高频刺激治疗,用于治疗运动障碍,如帕金森病。由于目标区域在现有成像技术中可见性差,因此DBS电极的植入和编程过程复杂且耗时。项目涉及使用计算机辅助手术技术,以及一个定制的微定位平台(StarFix),该平台允许在术前进行图像采集和目标规划,提高了手术的精确性和效率。此外,文章还讨论了系统架构和各个模块的功能,以及如何通过中央数据库和网络接口实现信息共享。
三菱FX3U步进电机FB块的应用:模块化程序实现电机换算,提高稳定性和移植性,三菱FX3U步进电机换算FB块:模块化编程实现电机控制的高效性与稳定性提升,三菱FX3U 步进电机算FB块 FB块的使用可以使程序模块化简单化,进而提高了程序的稳定性和可移植性。 此例中使用FB块,可以实现步进电机的算,已知距离求得脉冲数,已知速度可以求得频率。 程序中包含有FB和ST内容;移植方便,在其他程序中可以直接添加已写好的FB块。 ,三菱FX3U;步进电机换算;FB块;程序模块化;稳定性;可移植性;距离与脉冲数换算;速度与频率换算;FB和ST内容;移植方便。,三菱FX3U步进电机换算FB块:程序模块化与高稳定性实现
光伏逆变器TMS320F28335设计方案:Boost升压与单相全桥逆变,PWM与SPWM控制,MPPT恒压跟踪法实现,基于TMS320F28335DSP的光伏逆变器设计方案:Boost升压与单相全桥逆变电路实现及MPPT技术解析,光伏逆变器设计方案TMS320F28335-176资料 PCB 原理图 源代码 1. 本设计DC-DC采用Boost升压,DCAC采用单相全桥逆变电路结构。 2. 以TI公司的浮点数字信号控制器TMS320F28335DSP为控制电路核心,采用规则采样法和DSP片内ePWM模块功能实现PWM和SPWM波。 3. PV最大功率点跟踪(MPPT)采用了恒压跟踪法(CVT法)来实现,并用软件锁相环进行系统的同频、同相控制,控制灵活简单。 4.资料包含: 原理图,PCB(Protel或者AD打开),源程序代码(CCS打开),BOM清单,参考资料 ,核心关键词:TMS320F28335-176; 光伏逆变器; 升压; 逆变电路; 数字信号控制器; 规则采样法; ePWM模块; PWM; SPWM波; MPPT; 恒压跟踪法; 原理图; PCB; 源程序代码; BOM
centos9内核安装包
昆仑通态触摸屏与两台台达VFD-M变频器通讯实现:频率设定、启停控制与状态指示功能接线及设置说明,昆仑通态TPC7062KD触摸屏与两台台达VFD-M变频器通讯程序:实现频率设定、启停控制与状态指示,昆仑通态MCGS与2台台达VFD-M变频器通讯程序实现昆仑通态触摸屏与2台台达VFD-M变频器通讯,程序稳定可靠 器件:昆仑通态TPC7062KD触摸屏,2台台达VFD-M变频器,附送接线说明和设置说明 功能:实现频率设定,启停控制,实际频率读取等,状态指示 ,昆仑通态MCGS; 台达VFD-M变频器; 通讯程序; 稳定可靠; 频率设定; 启停控制; 实际频率读取; 状态指示; 接线说明; 设置说明,昆仑通态MCGS与台达VFD-M变频器通讯程序:稳定可靠,双机控制全实现
研控步进电机驱动器方案验证通过,核心技术成熟可生产,咨询优惠价格!硬件原理图与PCB源代码全包括。,研控步进电机驱动器方案验证通过,核心技术掌握,生产准备,咨询实际价格,包含硬件原理图及PCB源代码。,研控步进电机驱动器方案 验证可用,可以生产,欢迎咨询实际价格,快速掌握核心技术。 包括硬件原理图 PCB源代码 ,研控步进电机驱动器方案; 验证可用; 可生产; 核心技术; 硬件原理图; PCB源代码,研控步进电机驱动器方案验证通过,现可生产供应,快速掌握核心技术,附硬件原理图及PCB源代码。
高质量的OPCClient_UA源码分享:基于C#的OPC客户端开发源码集(测试稳定、多行业应用实例、VS编辑器支持),高质量OPC客户端源码解析:OPCClient_UA C#开发,适用于VS2019及多行业现场应用源码分享,OPCClient_UA源码OPC客户端源码(c#开发) 另外有opcserver,opcclient的da,ua版本的见其他链接。 本项目为VS2019开发,可用VS其他版本的编辑器打开项目。 已应用到多个行业的几百个应用现场,长时间运行稳定,可靠。 本项目中提供测试OPCClient的软件开发源码,有详细的注释,二次开发清晰明了。 ,OPCClient_UA; OPC客户端源码; C#开发; VS2019项目; 稳定可靠; 详细注释; 二次开发,OPC客户端源码:稳定可靠的C#开发实现,含详细注释支持二次开发
毕业设计
三菱FX3U六轴标准程序:六轴控制特色及转盘多工位流水作业功能实现,三菱FX3U六轴标准程序:实现3轴本体控制与3个1PG定位模块,轴点动控制、回零控制及定位功能,结合气缸与DD马达控制转盘的多工位流水作业模式,三菱FX3U六轴标准程序,程序包含本体3轴控制,扩展3个1PG定位模块,一共六轴。 程序有轴点动控制,回零控制,相对定位,绝对定位。 另有气缸数个,一个大是DD马达控制的转盘,整个是转盘多工位流水作业方式 ,三菱FX3U;六轴控制;轴点动控制;回零控制;定位模块;DD马达转盘;流水作业方式,三菱FX3U六轴程序控制:转盘流水作业的机械多轴系统