- MuleSoft教程
- MuleSoft - 主页
- MuleSoft - Mule ESB 简介
- MuleSoft - Mule 项目
- MuleSoft - 我们机器中的骡子
- MuleSoft - Anypoint Studio
- MuleSoft - 发现 Anypoint Studio
- 创建第一个 Mule 应用程序
- MuleSoft - DataWeave 语言
- 消息处理器和脚本组件
- 核心组件及其配置
- MuleSoft - 端点
- 流量控制和变压器
- 使用 Anypoint Studio 的 Web 服务
- MuleSoft - Mule 错误处理
- MuleSoft - Mule 异常处理
- MuleSoft - 使用 MUnit 进行测试
- MuleSoft 有用资源
- MuleSoft - 快速指南
- MuleSoft - 有用的资源
- MuleSoft - 讨论
MuleSoft - Mule 项目
Mule 项目背后的动机是 -
为了让程序员的事情变得更简单,
需要轻量级和模块化的解决方案,可以从应用程序级消息传递框架扩展到企业范围的高度分布式框架。
Mule ESB 被设计为事件驱动的编程框架。它是事件驱动的,因为它与消息的统一表示相结合,并且可以通过可插拔模块进行扩展。它是程序化的,因为程序员可以轻松地植入一些额外的Behave,例如特定的消息处理或自定义数据转换。
历史
Mule项目的历史视角如下:
SourceForge项目
Mule 项目于 2003 年 4 月作为 SourceForge 项目启动,两年后发布了第一个版本并转移到 CodeHaus。通用消息对象 (UMO) API 是其架构的核心。UMO API 背后的想法是统一逻辑,同时保持它们与底层传输隔离。
1.0版本
它于 2005 年 4 月发布,包含大量传输。随后的许多其他版本的重点是调试和添加新功能。
2.0版本(采用Spring 2)
Mule 2 采用 Spring 2 作为配置和连接框架,但由于缺乏所需 XML 配置的表达能力,它被证明是一次重大修改。当 Spring 2 中引入基于 XML 模式的配置时,这个问题得到了解决。
使用 Maven 构建
在开发和部署时简化 Mule 使用的最大改进是 Maven 的使用。从1.3版本开始,开始使用Maven构建。
骡源
2006 年,MuleSource 成立,“以帮助支持和推动在关键任务企业应用程序中使用 Mule 的快速增长的社区”。事实证明,这是 Mule 项目的重要里程碑。
Mule ESB 的竞争对手
以下是 Mule ESB 的一些主要竞争对手 -
- WSO2 ESB
- Oracle 服务总线
- WebSphere 消息代理
- Aurea CX 平台
- 费奥拉诺 ESB
- WebSphere DataPower 网关
- 工作日业务流程框架
- Talend 企业服务总线
- JBoss 企业服务总线
- iWay服务经理
Mule的核心理念
正如所讨论的,Mule ESB 是一个轻量级且高度可扩展的基于 Java 的企业服务总线 (ESB) 和集成平台。无论应用程序使用何种技术,Mule ESB 都可以轻松集成应用程序,使它们能够交换数据。在本节中,我们将讨论 Mule 的核心概念如何发挥作用来实现这种集成。
为此,我们需要了解其架构和构建块。
建筑学
Mule ESB 的架构分为三层,即传输层、集成层和应用层,如下图所示 -
一般来说,可以执行以下三种类型的任务来配置和定制 Mule 部署 -
服务组件开发
此任务涉及开发或重用现有的 POJO 或 Spring Bean。POJOs 是一个具有属性的类,可生成 get 和 set 方法、云连接器。另一方面,Spring Beans 包含丰富消息的业务逻辑。
服务编排
此任务基本上提供涉及配置消息处理器、路由器、转换器和过滤器的服务中介。
一体化
Mule ESB 最重要的任务是集成各种应用程序,无论它们使用什么协议。为此,Mule 提供了允许在各种协议连接器上接收和发送消息的传输方法。Mule 支持许多现有的传输方法,或者我们也可以使用自定义的传输方法。
建筑模块
Mule 配置具有以下构建块 -
春豆
Spring beans的主要用途是构建服务组件。构建完 Spring 服务组件后,我们可以通过配置文件来定义它,或者在没有配置文件的情况下手动定义它。
代理商
它基本上是在 Mule Studio 之前在 Anypoint Studio 中创建的服务。一旦启动服务器,代理就会创建,一旦停止服务器,代理就会被销毁。
连接器
它是一个配置有特定于协议的参数的软件组件。它主要用于控制协议的使用。例如,JMS 连接器配置有一个Connection,并且该连接器将在负责实际通信的各个实体之间共享。
全局配置
顾名思义,该构建块用于设置全局属性和设置。
全球端点
它可以在“全局元素”选项卡中使用,该选项卡可以在流程中多次使用 -
全局消息处理器
顾名思义,它观察或修改消息或消息流。转换器和过滤器是全局消息处理器的示例。
变压器- 变压器的主要工作是将数据从一种格式转换为另一种格式。它可以全局定义并且可以在多个流中使用。
过滤器- 过滤器将决定应该处理哪个 Mule 消息。过滤器基本上指定了处理消息并将其路由到服务必须满足的条件。
楷模
与代理相反,它是在工作室中创建的服务的逻辑分组。我们可以自由地启动和停止特定模型内的所有服务。
服务- 服务是包装我们的业务逻辑或组件的服务。它还专门为该服务配置路由器、端点、变压器和过滤器。
端点- 它可以定义为服务将入站(接收)和出站(发送)消息的对象。服务通过端点连接。
流动
消息处理器使用流来定义源和目标之间的消息流。
Mule消息结构
完全封装在 Mule 消息对象下的 Mule 消息是通过 Mule 流在应用程序中传递的数据。Mule 消息的结构如下图所示:
如上图所示,Mule Message 由两个主要部分组成 -
标头
它只不过是消息的元数据,由以下两个属性进一步表示 -
入站属性- 这些是由消息源自动设置的属性。用户无法操纵或设置它们。实际上,入站属性是不可变的。
出站属性- 这些属性包含像入站属性一样的元数据,并且可以在流程过程中设置。它们可以由 Mule 自动设置,也可以由用户手动设置。实际上,出站属性是可变的。
当消息通过传输从一个流的出站端点传递到另一流的入站端点时,出站属性将成为入站属性。
当消息通过流引用而不是连接器传递到新流时,出站属性仍保留为出站属性。
有效载荷
消息对象携带的实际业务消息称为负载。
变量
它可以被定义为关于消息的用户定义的元数据。基本上,变量是有关处理消息的应用程序所使用的消息的临时信息。它并不意味着与消息一起传递到目的地。它们分为以下三种类型 -
流变量- 这些变量仅适用于它们存在的流。
会话变量- 这些变量适用于同一应用程序中的所有流。
记录变量- 这些变量仅适用于作为批次的一部分处理的记录。
附件和额外有效载荷
这些是关于消息有效负载的一些额外元数据,不一定每次都出现在消息对象中。