Mulesoft 简明教程

MuleSoft - The Mule Project

Mule项目的动机如下−

  1. 为程序员简化任务,

  2. 轻量级和模块化解决方案的需求,该解决方案可以从应用程序级消息传递框架扩展到企业级的高度可分发框架。

Mule ESB的设计基于事件驱动和以编程为基础的框架。它基于事件驱动,因为它结合了消息的统一表示方式,并且可以通过可插入模块进行扩展。它以编程为基础,因为程序员可以轻松地植入一些附加行为,例如特定消息处理或自定义数据转换。

History

Mule项目的背景如下−

SourceForge project

Mule项目始于2003年4月的SourceForge项目,两年后其第一版发布并转移到CodeHaus。通用消息对象(UMO)API是其架构的核心。UMO API背后的理念是统一逻辑,同时使它们与底层传输保持隔离。

Version 1.0

它于2005年4月发布,其中包含许多传输。随后许多其他版本的主要重点是调试和添加新功能。

Version 2.0 (Adoption of Spring 2)

Spring 2作为配置和连接框架被采纳到Mule 2中,但它被证明是一次重大的检修,因为缺少对必需的XML配置的表达力。当基于XML架构的配置被引入Spring 2时,此问题得到解决。

Building with Maven

在开发和部署时简化Mule使用的最大改进是使用Maven。从1.3版本开始,它开始使用Maven构建。

MuleSource

2006年,MuleSource成立,旨在“帮助支持和支持在关键任务企业应用程序中使用Mule的快速增长社区”。这被证明是Mule项目的关键里程碑。

Competitors of Mule ESB

以下是Mule ESB的主要竞争对手−

  1. WSO2 ESB

  2. Oracle Service Bus

  3. WebSphere Message Broker

  4. Aurea CX Platform

  5. Fiorano ESB

  6. WebSphere DataPower Gateway

  7. Workday Business Process Framework

  8. Talend Enterprise Service Bus

  9. JBoss Enterprise Service Bus

  10. iWay Service Manager

Mule’s Core Concept

如上所述,Mule ESB是一个基于Java的轻量级且高度可扩展的企业服务总线(ESB)和集成平台。无论应用程序使用何种技术,Mule ESB都能轻松集成应用程序,使其能够交换数据。在本节中,我们将讨论Mule的核心概念,以实现这种集成。

为此,我们需要了解其架构及构建块。

Architecture

Mule ESB的架构具有三层,即传输层、集成层和应用程序层,如下图所示−

mule core concept

通常,可以执行以下三类任务来配置和定制Mule部署−

Service Component Development

此项任务涉及开发或重复使用现有的POJO或Spring Bean。POJO是一个带有属性的类,该属性生成get和set方法、云连接器。另一方面,Spring Bean包含用于丰富消息的业务逻辑。

Service Orchestration

此项任务基本提供了涉及配置消息处理器、路由器、转换器和过滤器的服务中介。

Integration

Mule ESB的最重要任务是集成各种应用程序,无论它们使用的协议如何。为此,Mule提供了传输方法,允许在各种协议连接器上接收和分发消息。Mule支持许多现有的传输方法,或者我们还可以使用自定义传输方法。

Building Blocks

Mule配置具有以下构建块−

building blocks

Spring beans

Spring bean 的主要用途是构建服务组件。构建 Spring 服务组件后,如果用户没有配置文件,可以通过配置文件或手动定义服务组件。

Agents

它最初是 Anypoint Studio 中在 Mule Studio 之前创建的服务。一旦服务器启动,将会创建一个代理,一旦服务器停止,将会销毁该代理。

Connector

它是一个软件组件,配置为特定于协议的参数。它主要用于控制协议的使用。例如,JMS 连接器配置有 Connection ,该连接器共享在负责实际通信的不同实体之间。

Global Configuration

顾名思义,这个构建块用于设置全局属性和设置。

Global Endpoints

它可以在“全局元素”选项卡中使用,该选项卡可以在流程中多次使用:

Global Message Processor

顾名思义,它观察或修改消息或消息流。转换器和过滤器是全局消息处理程序的示例。

Transformers - 转换器的主要工作是将数据从一种格式转换成另一种格式。可以在全局中定义,并可以在多个流程中使用。

Filters - 它是一个过滤器,将决定应该处理哪条 Mule 消息。过滤器基本上指定消息必须满足的条件,然后才能处理并路由到服务。

Models

与代理相反,它是工作室中创建的服务的逻辑分组。我们有权启动和停止特定模型中的所有服务。

Services - 服务是封装业务逻辑或组件的服务。它还专门为该服务配置了路由器、端点、转换器和过滤器。

Endpoints - 可以将其定义为一个对象,服务将在其上入站(接收)和出站(发送)消息。服务通过端点连接。

Flow

消息处理器使用流程在源与目标之间定义消息流。

Mule Message Structure

Mule 消息完全包装在 Mule 消息对象中,是通过 Mule 流程传递到应用程序中的数据。Mule 消息的结构在以下图表中显示:

message structure

正如上述图表中所示,Mule 消息包含两个主要部分:

Header

它只不过是消息的元数据,由以下两个属性进一步表示:

Inbound Properties - 这些属性由消息源自动设置。它们不能由用户操作或设置。本质上,入站属性是不可变的。

Outbound Properties - 这些属性是包含元数据的属性,比如入站属性,可以在流程期间设置。它们可以由 Mule 自动设置,也可以由用户手动设置。本质上,出站属性是可变的。

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

当消息通过 flow-ref 而不是连接器转到新流程时,出站属性仍保持出站属性。

Payload

消息对象承载的实际业务消息称为有效负载。

Variables

它可以定义为关于消息的用户自定义元数据。基本上,变量是有关于由正在处理该消息的应用程序使用的消息的暂时信息片段。它不应该与消息一起传递到其目的地。它们有以下三种类型 −

Flow variables − 这些变量仅适用于它们存在的流。

Session variables − 这些变量适用于同一应用程序中的所有流。

Record variables − 这些变量仅适用于作为一个批处理的一部分处理的记录。

Attachments and Extra Payload

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