Mulesoft教程
Mulesoft ESB
Mulesoft是一个流行的集成平台,它可以帮助开发人员将应用程序连接在一起,从而实现数据交换,此外,其优势在于快速和简便。无论各种应用程序使用哪种技术,包括HTTP,JMS,Web服务,JDBC和其他技术,Mulesoft在轻松集成现有系统中都非常有用。ESB提供的另一个显着优势是实时集成和集成。事件的编排或成批编排,可以在任何地方进行部署并具有全球连接性。
您可能会想到一个问题,即ESB是什么,以及类似于总线的基础结构在哪种方式下对组织应用程序和系统很有用。
考虑到ESB的想法是由于点对点集成中存在缺点。经过一段时间后,主要的问题是脆性和难以管理。点对点集成还具有另一个缺点:由于使用了这种方法,因此自定义集成代码将在应用程序中散布,而没有中央化的方式来促进监视或故障排除。通常将其称为“意大利面条代码”,并且由于在应用程序之间创建了紧密的依赖关系,因此也无法扩展。
企业服务总线(ESB)是一种体系结构。
可以将其视为规则和原则的融合,其目的是将许多应用程序集成在一起,而不考虑类似总线的基础结构上的数量。ESB体系结构的本质是,通过在它们之间提供通信总线,它们将能够集成不同的应用程序。这样,每个应用程序都可以与总线通信。结果,系统彼此分离,从而使它们能够进行通信而无需依赖或不了解总线上的其他系统。
ESB具有以下优点:
它加快了您的新计划的营销过程
生产力得到了极大的提高,这可以转化为您企业中开发的更多应用程序
得益于转换功能和预先建立的通信,在应用程序开发过程中可以利用现有系统。
如果对以下问题的回答为“是”,则应使用ESB!
是否需要集成三个或更多应用程序或服务?
是否有随着时间的流逝插入更多应用程序的要求?
是否有使用多种通讯协议的要求?
是否需要消息路由功能,例如基于内容的路由,派生和聚合消息流?
是否存在您发布的服务被其他应用程序使用的情况?
回到我们的主要讨论主题,Mule ESB包含以下功能:
服务中介 -帮助在应用程序之间创建消息协议和格式独立性。
服务创建和托管 -它充当轻量级容器,以公开和托管可重用服务。
数据转换 -促进数据交换,而不考虑格式或传输协议。
消息路由 -有助于根据规则和内容对消息进行重新路由,过滤,聚合或重新排序。
Mule ESB被认为是市场上最好的。想知道为什么?现在让我们尝试了解Mule ESB提供的竞争优势。
上下有效缩放:
这样可以确保您的团队拥有无限的自由。结果,他们可以根据需要将尽可能多的应用程序和系统桥接在一起。
理想地可嵌入:
可以直接嵌入到单个应用程序中
可以将其插入您的应用服务器
也可以嵌入到JUnit测试用例中
集成所有组件:
不论使用哪种技术。不仅将它们集成到其保护伞下,还增强了各种应用程序和多个系统的基础架构之间的通信。
高度可访问性:
支持多种代码语言,并且还附带了您的团队可能已经熟悉的多种广泛使用的工具。直接的结果是,开发团队在编写自定义代码时将面临的问题要少得多。
组件的可重用性:
激励并鼓励团队重用基础架构组件。
轻巧:
通过采用模块化设计消除所有未使用的模块,您可以减轻重量
组件的可重用性:
鼓励团队重用您的基础架构组件。
轻巧:
它的模块化设计通过卸下所有未使用的模块来帮助您减轻重量。
Mule子应用程序构建基块
Mule Palette是将Mule应用程序构建模块分为几类的地方。让我们快速浏览其中的每一个。
消息来源:
在构建基块中,消息源是第一个。它是一个接收器,有助于接收新消息并将其放置在队列中以进行处理。
消息源是Anypoint连接器。连接器可用于提供与外部资源的连接,例如:
协议,数据库或API。
标准协议(HTTP,SMTP,AMQP,FTP)。
Twitter,Salesforce或MongoDB(第三方API)。
任何点的连接器:
第二个构建块是Anypoint连接器。Anypoint Platform配备了120多个预制连接器-其中30个与Anypoint Studio打包在一起,其余的可在Anypoint Exchange中使用。
可以通过两种方式访问连接器:直接从Anypoint Studio或访问https://www.mulesoft.com/exchange
在这里,我们主要有两种类型的Anypoint连接器:
基于端点的连接器
基于操作的连接器
基于端点的连接器:
流中有两个端点,可以是入站或出站。
入站端点充当流的消息源。
出站端点有助于将信息传输到外部系统。
基于运营的连接器:
为了构造构建块,这些连接器将需要指定操作。此类别包括大多数不基于标准通信协议的连接器。
您可能对端点和连接器的概念不太清楚。连接器不过是与任何外部资源的Mule特定连接。但是可以将端点视为已配置为便于从外部资源接收消息和/或向外部资源发送消息的流级别元素。
每当您从Mule Palette中拖动连接器时,都会创建一个端点。连接器和端点,它们都是全局元素。
基于操作的连接器
为了构造构建块,这些连接器需要指定操作。此类别包括大多数不基于标准通信协议的连接器。
您可能对端点和连接器有些困惑。与任何外部资源的特定于Mule的连接称为连接器。但是端点是配置为从外部资源接收消息和/或向外部资源发送消息的流级别元素。
从Mule Palette中拖动连接器时,将创建一个端点。连接器和端点都是全局元素。
MulesoftAnypoint
现在,让我们继续到Mulesoft Anypoint Studio。Anypoint Studio是基于Eclipse的集成开发环境(IDE),可提供:
图形和XML视图之间的双向编辑选择。
数据转换和语言的框架(EE-企业版)。
频繁集成模式的模板(EE-企业版)。
视觉调试(EE-企业版)
与Maven集成以实现连续的构建过程
一键式部署应用程序。
在Anypoint Studio中运行应用程序:
为了在不离开应用程序的情况下对其进行测试,Anypoint Studio中提供了嵌入式Mule运行时。该控制台将向我们提供应用程序日志和信息。
测试应用程序以向端点发出请求:
一些选项包括
使用浏览器。
利用CURL命令行实用程序。
浏览器扩展程序,例如Postman(适用于Google Chrome)。
Mule子流和消息:
现在让我们谈谈ule子流和消息。
Flow子流
在流中插入的一系列消息处理器的帮助下,Mule应用程序完成了消息的接受和处理。
典型的流程包含以下组件:
消息源 -接收来自外部源的消息,然后触发流的执行。
消息处理器 -转换,过滤,丰富和处理消息。
一个应用程序可以包括:
单流。
连接在一起的多个流有助于创建更复杂的应用程序。
Mule子留言
Mule子消息包括
从消息源设置的入站属性
消息处理器将添加的出站属性
有效载荷是消息的症结
附件可以被视为邮件的辅助信息
消息结构分为两部分:
消息头 –由消息元数据组成
消息的有效负载 –由业务特定数据组成
每个消息对象都在其中包含嵌入式消息。可以从上下文中检索消息对象。我们还可以选择通过使用Mule流中的自定义Java组件和转换器来更改其属性和有效负载。
属性,变量和传输障碍
性质
消息元数据包括属性。变量有助于说出有关消息的信息。属性和变量的范围表征了它们在消息生命周期中的应用。
根据其程度,属性可以分为两种:入站和出站。
入站属性
一些属性包含元数据,这些元数据有助于防止消息在跨流交叉时被混淆。这些属性是不变的,不能由客户端修改。只能根据流的程度来访问它们-当消息离开流时,入站属性将不再在那里可用。
出站属性
因此,出站属性可以由Mule设置或通过客户端的流安排来设置。与入站属性相反,出站属性是可变的。在穿越传输屏障后,无论消息进入另一个流的任何点,它们都将变为入站属性。
通过调用特定范围内的相关setter和getter技术,可以分别设置和获取出站和入站属性:
在应用程序中,有两种类型的变量可以声明。
流量变量
流变量是Mule流的局部变量,可在流,子流和私有流中使用。
会话变量
声明会话变量后,它就可以在整个应用程序中使用。
运输障碍
传输屏障包含HTTP连接器,VM,JMS或类似的连接器。这些需要消息的方式或端点以便被操纵。
如果我们谨慎地看待,就流量障碍而言,流量变量和会话变量之间的一项关键改进是,流量变量不能跨转运障碍交叉访问,但是,会话变量在所有流量中均可通过任务访问。
流参考
在子流或私有流形成的过程中,我们可以暗示来自父流或使用流引用段的另一个流。流变量和会话变量都可以在子流和私有流中访问,这些子流和私有流可以使用流引用来暗示。
Mulesoft示例应用程序
通过在Anypoint Studio中创建一个包含不同流程的应用程序,并利用入站和出站连接器在彼此之间进行分配,让我们有机会感到灰心。
我们可以将HTTP侦听器配置为
<http:listener-config name="HTTP_Listener_Configuration" host =“ localhost” port =“ 8081” doc:name =“ HTTP侦听器配置” />
流组件必须始终包含在 标签。让我们看一个包含多个组件的示例流程:
步骤2。在流程中提供了对已配置的HTTP侦听器的引用。发布我们正在维护的记录器,该记录器对于记录HTTP侦听器通过POST方法接收的有效负载非常有用。
然后,为了在接收到消息后转换有效负载,放置了一个自定义Java转换器类.
第三步。转换器类必须扩展AbstractMessageTransformer。还在类中设置了出站属性。现在,已经在消息对象内部转换了有效负载,并在使用记录器的帮助下将其记录在控制台中,现在我们将设置两个变量-流变量和会话变量。
最后,我们现在将使用出站VM连接器发送有效负载。接收端点由VM连接器中的路径确定。
步骤4。 经过初始流程的携带和转换后,现在有消息在入站VM端点的帮助下到达Flow1。Java组件将检索第一个流所设置的出站属性,并返回对象,该对象现在是消息有效负载。
此任务的transfer message()方法.
此后,会话和流变量将设置为第二个流。现在,我们使用flow-ref组件获得了对Flow2的引用。
在Flow2中,该消息已在Java组件类的帮助下进行了更改,并将其记录在控制台中。F3流量变量也已设置。
在借助flow-ref调用Flow2之后,Flow1将等待消息在Flow2中进行处理。在两个流中都可以访问在Flow1和Flow2中设置的任何流变量。
其原因是这些流量没有被任何运输障碍所分隔。最后,在VM的帮助下,消息将发送回HTTP请求者。所有虚拟机均已配置为请求响应。通过在主体中发布任何JSON数据,可以从任何REST客户端调用此应用程序。按照HTTP侦听器的配置,URL将为localhost:8081。
步骤5. 在命令行中使用Maven构建项目
我们需要在Maven的conf目录中的settings.xml文件中包含pluginGroup,
<pluginGroups><pluginGroup> org.mule.tools </ pluginGroup></ pluginGroups>
现在,可以使用以下命令轻松启动Maven项目:
mvnmule-project-archetype:create -DartifactId = muleesb -DmuleVersion = 3.8.1
完成此项目的配置后,可以使用mvn package命令创建可部署的存档。可以在任何独立的Mule服务器的apps文件夹中完成此存档的部署。
这涵盖了我们在MulesoftAnypoint Studio中的示例应用程序。如有任何理解上的问题,请与我们联系。
结论
Mulesoft既轻巧又具有高度可扩展性,它允许人们从小规模开始,并随着时间的推移连接更多的应用程序。它提供的竞争优势也是无与伦比的。我们迫不及待想看到您入门并继续前进。