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核心概念

一般来说,可以执行以下三种类型的任务来配置和定制 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 自动设置,也可以由用户手动设置。实际上,出站属性是可变的。

当消息通过传输从一个流的出站端点传递到另一流的入站端点时,出站属性将成为入站属性。

当消息通过流引用而不是连接器传递到新流时,出站属性仍保留为出站属性。

有效载荷

消息对象携带的实际业务消息称为负载。

变量

它可以被定义为关于消息的用户定义的元数据。基本上,变量是有关处理消息的应用程序所使用的消息的临时信息。它并不意味着与消息一起传递到目的地。它们分为以下三种类型 -

流变量- 这些变量仅适用于它们存在的流。

会话变量- 这些变量适用于同一应用程序中的所有流。

记录变量- 这些变量仅适用于作为批次的一部分处理的记录。

附件和额外有效载荷

这些是关于消息有效负载的一些额外元数据,不一定每次都出现在消息对象中。