ohoh,不会贴图!望知情者赐教。
主要构件
Transport:传输
router:路由
fitler:过滤
componet:处理
transport
针对每一个协议都有专门的实现,内部又细分为:
connector:负责协议的公共属性的维护。
transformer:负责协议到本地处理的格式转换。
endpoint:负责具体的链路的维护,在输入端就为inbound endpoint,负责消息输入链路的创建和监听;在输入端为outbound endpoint,负责建立像外部服务发送消息的链路。
后续根据不同的transport再分别进行介绍。
router:
selective-consumer-router
在inbound标签中使用。可以同时添加多个filter。默认情况下,filter对transformer之后的message进行检查,如果需要对transfomer之前的进行检查,则需要设置属性transformFirst。
Idempotent Message Filter
只处理唯一的消息,通过消息ID的来识别,消息id通过属性idExpresson指定的表达式生成,默认为#[message:id]。
<idempotent-message-filter>:子元素simple-text-file-store——指定存储消息ID的位置。
Idempotent Secure Hash Message
Filter
通过计算消息的哈希值来确保处理的消息时唯一的。
Collection Aggregator
将具有相同属性(group id等)的输入消息进行聚合。
<collection-aggregator>,属性timeout—等待的时长,failOnTimeout—超时是否直接发送。
<custom-aggregator>,定义用户自己的消息聚合方法,类中需要实现MessageProcessor方法,并继承AbstractAggregator。也可以是spring bean。
Message Chunk Aggregator
将拆分的消息重新组合。
<message-chunk-aggregator>
Correlation Resequencer
correlation-resequencer-router,通过消息相关的顺序属性对一组消息进行排序。包括timeout,failOnTimeout属性。
Forwarding Router
<forwarding-router/>,直接将消息发到outbound,而不经过component的处理。目前集成已有的web应用,通过此处方式最为简便。
建议使用bridge pattern来代替之。
WireTap Router
在inbound配置,可以将消息路由到其他endpoint(与发到component的相同)。比如对消息进行入队列的备份等。不会更改正常流程,只添加一个拷贝的处理。如果需要同时分发到多处处理时,使用多个wire-tap-router是比较好的选择,此时类似并发处理。如果在每个router中增加filter功能,则就类似if条件分支的处理。
Matching All Routers
默认情况下,消息有首个满足条件的outbound router处理。如果需要由所有满足条件的outbound router进行处理,则需要设置outbound的matchAll属性。这里也类似与if条件分支。
Request Reply
在一个channel上接收消息,异步的处理服务,使用另一个channel来异步接收处理结果。
Collection Splitter
如果消息负载为Collection类型,则将消息集合中的每一个成员单独发给消息处理者。
<collection-splitter>:属性enableCorrelation—决定是否对每一个单独的消息设置一个对应的ID。
Filter:
Payload Type Filter
元素为:<payload-type-filter
expectedType="”/>。对负载的类型进行检查。
Expression Filter
元素为:<expression-filter
evaluator="xpath" expression="”>。采用表达式进行检查,检查方式使用evaluator进行指定,这里可以是header,payload-type, exception-type, wildcard, regex, ognl, xpath, jxpath,
bean, groovy, or custom。此外可以通过nullReturnsTrue属性来决定表达式为null时,是否返回true。
RegEx
Filter
元素为:<regex-filter pattern="the quick brown (.*)"/>,对消息负载使用正则表达式进行匹配。这里filter会对payload使用toString()操作,因此只针对string类型使用正则匹配。
Wildcard Filter
元素为:<wildcard-filter pattern="the quick brown *"/>,使用通配符对消息负载进行匹配。这里filter会对payload使用toString()操作,因此只针对string类型使用正则匹配。
Exception Type Filter
元素为,<exception-type-filter expectedType="java.lang.RuntimeException"/>,匹配异常类型。
Message Property Filter
元素为,<message-property-filter
pattern="Content-Type=text/xml" caseSensitive="false"/>,对消息的属性进行匹配,比如http的消息头。caseSensitive属性用于指定是否区分大小写。
Logic
Filters
包括<and-filter>,<or-filter>,<not-filter>,对多个filter进行组合使用。
消息传输方式
同步方式:
在Mule的Flow中,针对某个消息的后续处理都会固定在一个线程中完成,支持request-response方式,此时服务必须是synchronous的inbound endpoint,并且没有outbound endpoint。
当信息进入Inbound时是由线程a来进行处理,那么该消息进入到Component时也是由线程a进行处理,Component处理完毕后,返回给Inbound由同样的线程a处理完成并返回结果。
如果有outbound,则会阻塞等待outbound目标应用响应,直到超时。同步调用总会返回一个结果,即使有outbound endpoint存在。其返回的值与outbound出去的一致。
异步方式:
在Mule的Flow中,当信息通过每个信息的处理阶段都可以使用不同的线程来进行处理。(one way通讯方式)
当消息进入Inbound时,由线程a处理,当消息被放入SEDA队列后,由线程b来负责处理消息。该调用没有返回值。这里的服务必须有一个异步的inbound endpoint。
整个调用过程中间可以有多个outbound
可以在outbound router设置reply-to,同时在需要获取响应的endpoint设置<async-reply>元素。
如果出错,则Mule server会对其进行处理,可以使用error endpoint来router该错误,发起该调用的客户端可以在单独的线程上监听error queue,也可以有一个单独的error处理客户端。——异步客户端也是能获取返回值的。注意与flow的区别!
消息的通信方式可以在connector,endpoint,transport中进行设置。使用exchange-pattern属性来指定。
这里官网上的说明比较全,网上也有很多资料,不多啰嗦了。
分享到:
相关推荐
3. Mule Studio基本概念和组件 文档详细介绍了Mule Studio的各个部件,包括端点(Endpoints)、组件(Components)、转换器(Transformers)、过滤器(Filters)、流程控制(Flow Controls)、路由器(Routers)和...
通常,Mule ESB使用log4j或Logback作为日志框架,`log4j.properties`文件即为该框架的配置文件,它允许我们定制日志级别、输出目的地和格式。 `openejb.conf`和`openejb.properties`涉及到OpenEJB,这是一个开源的...
Mule ESB 中的一些基本概念: 1. Model:表示托管各个服务的运行时环境。 2. Service:是用来处理服务请求的基本单位,它调用各个组件进行服务请求的处理。 3. Transport:管理消息的接收和发送,数据转换的过程也...
对于初学者,建议首先通过官方文档了解Mule ESB的基本概念和工作原理,然后使用Anypoint Studio实践创建简单的集成项目。随着经验的积累,逐步掌握高级功能,如流处理、错误处理和性能优化。 总结来说,Mule ESB是...
1. **流与组件**:流是Mule ESB中的基本构造单元,用于定义数据的处理路径。组件则是在流中执行特定任务的逻辑实体,如变换、过滤或路由。 2. **连接器**:连接器负责与外部系统通信,如数据库、文件系统、Web服务...
Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...
- **UMO (Universal Message Objects)**:这是Mule 2.0及以前版本中的概念,现已由Component Composition取代。UMO用于实现整合逻辑,可以是POJO或JavaBean等形式。 - **组件Composition**:用于组织和编排业务逻辑...
在MULE ESB-4.1社区版中,主要包含以下几个关键组件和概念: 1. **AnyPoint Studio**: AnyPoint Studio是Mulesoft提供的集成开发环境(IDE),基于Eclipse,用于构建、测试和调试Mule应用程序。它提供了图形化的...
4. **Web服务支持**:Mule ESB能够处理基于Axis或Glue的Web服务,支持SOAP和其他Web服务标准,允许服务间的互操作性。 5. **灵活的部署结构**:Mule ESB提供了多种部署拓扑,包括Client/Server、P2P(对等)、ESB...
首先,我们需要理解ESB的基本概念。ESB作为一个中间件,它的主要作用是提供一种松耦合的方式,使得各个系统之间可以通过标准接口进行通信,而不是直接依赖对方的内部结构。Mule ESB提供了多种协议的支持,包括HTTP、...
在学习和使用Mule ESB时,理解其基本概念和架构至关重要。`APDevFundamentals3.8_studentManual_20jun2016.pdf` 和 `APDevFundamentals3.8_studentManual_20jun2016【翻译狗www.fanyigou.com】.pdf` 这两个文件是...
《Mule ESB Cookbook随书源码》是一个与Mule ESB相关的实践指南,它包含了大量实例代码,旨在帮助读者深入理解和应用Mule ESB这一开源企业服务总线(Enterprise Service Bus)。Mule ESB是业界广泛采用的ESB解决方案...
下面将从配置、服务、消息模式、端点、云连接以及构建块等方面,深入解析 Mule ESB 的核心概念和技术要点。 ### 关于 XML 配置文件 在 Mule ESB 中,XML 配置文件是定义应用程序行为的关键。它包含了组件、连接器...
4. **Mule ESB的安装与配置** - MuleESB有两个版本:社区版和企业版。社区版免费,适合初学者和小型项目;企业版提供了更多高级特性和支持服务,适合大型企业和复杂项目。 - 下载并安装MuleESB后,可以通过Mule ...
标题:《Mule ESB 3用户指南》 描述:本手册旨在为用户提供对Mule ESB 3的基础使用指导,强调了Mule ESB作为一个社区成熟且文档丰富的开源企业服务总线(ESB)的使用方法。 知识点说明: 1. Mule ESB概述: Mule ...
MULE ESB(Mule Enterprise Service Bus)是Anypoint Platform的核心组件,它是一个强大的、全面集成的企业服务总线(ESB),专为构建、部署和管理API和集成解决方案而设计。MULE ESB-4.1是MuleSoft公司推出的企业版...
Mule ESB应用部署 Mule ESB应用的目录结构,配置文件说明
Mule ESB(Enterprise Service Bus,企业服务总线)是一种强大的集成平台,它允许不同的系统、应用程序和服务之间进行无缝通信。Mule ESB的核心功能包括数据转换、协议适配、消息路由以及流程管理,旨在简化企业的IT...