Mule 是一个基于ESB架构理念的消息平台。Mule 的核心是一个基于SEDA的服务容器,该容器管理被称为通用消息对象(Universal Message Objects /UMO)的服务对象,而这些对象都是POJO。所有UMO和其他应用之间的通信都是通过消息端点(message endpoint)来进行的。这些端点为众多的分立的技术,比如Jms, Smtp, Jdbc, Tcp, Http, Xmpp, file等等,提供了简单和一致的接口。
Mule 应用通常是由网络中的许多Mule 实例组成。每一个实例都是一个驻留一个或者多个UMO组件的轻量级容器。每一个UMO 组件都有一个或者多个通过它(们)发送和接收事件的端点。
容器通过UMO组件提供各种各样的服务,比如事务管理、事件转换,路由,事件关联、日志、审计和管理等等。Mule将对象构造从管理手段中分离出来,通常流行框架和IoC/DI 容器,如Spring, PicoContainer 或者 Plexus 可用这种管理手段来构建你的UMO 组件。
很多人认为, "Mule是一个Jms 实现"。实际上,Mule 不是一个Jms server,但是可以配置来使用任何你觉得非常漂亮的Jms server。Mule 的理念是,如果已经有了稳定和广泛接受的实现,就不会直接实现任何传输。例如,Mule 就重用了Axis 和 GLUE 的SOAP栈而不是重新实现一个。Mule 提供了一个一致的服务集来管理任何类型的连接的事件流、关联、事务、安全和审计。
下面是Mule Server 组件的简单图示:
Mule 应用通常是由网络中的许多Mule 实例组成。每一个实例都是一个驻留一个或者多个UMO组件的轻量级容器。每一个UMO 组件都有一个或者多个通过它(们)发送和接收事件的端点。
容器通过UMO组件提供各种各样的服务,比如事务管理、事件转换,路由,事件关联、日志、审计和管理等等。Mule将对象构造从管理手段中分离出来,通常流行框架和IoC/DI 容器,如Spring, PicoContainer 或者 Plexus 可用这种管理手段来构建你的UMO 组件。
很多人认为, "Mule是一个Jms 实现"。实际上,Mule 不是一个Jms server,但是可以配置来使用任何你觉得非常漂亮的Jms server。Mule 的理念是,如果已经有了稳定和广泛接受的实现,就不会直接实现任何传输。例如,Mule 就重用了Axis 和 GLUE 的SOAP栈而不是重新实现一个。Mule 提供了一个一致的服务集来管理任何类型的连接的事件流、关联、事务、安全和审计。
下面是Mule Server 组件的简单图示:
- Mule Manager
Mule Manager是Mule server 实例的中心(也称为一个节点户或者Mule Node)。其主要的角色是管理各种对象,比如Mule实例的连接器、端点和转换器。这些对象然后被用来控制进出你的服务组件的消息流,并且为Model和它所管理的组件提供服务。
- Model
- UMO Components
- Endpoints
- External Applications
- 关键特性
基于J2EE 1.4的企业消息总线( Enterprise Service Bus (ESB))和消息代理(broker)
可插入性连接,比如Jms (1.0.2b 和 1.1), vm (嵌入), jdbc, tcp, udp, multicast, http, servlet, smtp, pop3, file, xmpp等
支持任何传输之上的异步,同步和请求响应事件处理机制
支持Axis或者Glue的Web Service.
灵活的部署结构[Topologies]包括Client/Server, P2P, ESB 和Enterprise Service Network.
支持声明性和编程性事务,包括XA 支持
对事件的路由、传输和转换的断到端支持
Spring 框架集成。可用作ESB 容器,而Mule c也可以很容易的嵌入到Spring 应用中。
使用基于SEDA处理模型的高度可伸缩的企业服务器
支持REST API 来提供技术独立和语言中立的基于web的对Mule 事件的访问
强大的基于EIP模式的事件路由机制
动态、声明性的,基于内容和基于规则的路由选项
非入侵式的方式。任何对象都可以通过ESB 容器管理
强大的应用集成框架
完整的可扩展的开发模式 - 何时使用
一般在这些情形下使用Mule -
集成两个或者多个需要互相通信的或者多个现有的系统.
需要完全和周围环境去耦合的应用,或者需要在系统中伸缩不止一个组件的系统
开发人员不知道未来是否会将其应用分发或者伸缩需求的单VM 应用。