1. filter的作用
filter指定了能够被service转发(routed)或是进一步被flow所处理的message所需要满足的条件。
2. filter分类
Mule3的用户开发手册中,将filter分为三大类:Standard Filters、Transport and Module Filters、Custom Filters。
2.1 Standard Filters
结构:
|-Payload Type Filter
|-Expression Filter
|-- XPath Expressions
|-- JXPath Expressions
|-- OGNL Expressions
|-RegEx Filter
|-Wildcard Filter
|-Exception Type Filter
|-Message Property Filter
|-Logic Filters
|-- And Filter
|-- Or Filter
|-- Not Filter
2.1.1 Payload Type Filter
检查payload对象的类型,如:
<payload-type-filter expectedType="java.lang.String">
2.1.2 Expression Filter
使用evaluator属性指定expression evaluator——以下中的一个:header, payload-type, exception-type, wildcard, regex, ognl, xpath, jxpath, bean, groovy, custom。
使用expression属性设置实际的表达式:
如果evaluator是xpath, bean, ognl中的一个,expression是boolean类型的;
如果evaluator是custom,需要使用customEvaluator指定一个已经被mule注册的自定义表达式。
xpath: <expression-filter evaluator="xpath" expression="(msg/header/resultcode)='success'">
jxpath: <expression-filter evaluator="jxpath" expression="(msg/header/resultcode)='success'">
ongl: <expression-filter evaluator="ognl" expression="[MULE:0].equals(42)"/> 或 <ognl-filter expression="[MULE:0].equals(42)"/>
2.1.3 RegEx Filter
对message的payload使用正则表达式匹配,payload需要支持toString方法,因此可以使用AndFilter结合PayloadTypeFilter校验payload的类型。
<regex-filter pattern="the quick brown (.*)"/>
2.1.4 Wildcard Filter
使用通配符对massage的payload进行匹配,payload需要支持toString方法,因此可以使用AndFilter结合PayloadTypeFilter校验payload的类型。
<wildcard-filter pattern="the quick brown *"/>
2.1.5 Exception Type Filter
一个匹配异常类型的filter。
<exception-type-filter expectedType="java.lang.RuntimeException"/>
2.1.6 Message Property Filter
该filter支持基于message property属性的业务逻辑过滤,这个过滤器非常强大,这时因为message的properties属性是对外公开的,用户可以自定义property的属性。
属性匹配默认是大小写敏感的,可以通过caseSensitive进行修改,如:
<message-property-filter pattern="Content-Type=text/xml" caseSensitive="false"/>
2.1.7 Logic Filters
Logic Filters包含三类:And, Or, and Not。由于它可以嵌套其他的filter,所以filter的逻辑可以进行组合。
And Filter:
<and-filter>
<payload-type-filter expectedType="java.lang.String"/>
<regex-filter pattern="the quick brown (.*)"/>
</and-filter>
Or Filter:
<or-filter>
<payload-type-filter expectedType="java.lang.String"/>
<payload-type-filter expectedType="java.lang.StringBuffer"/>
</or-filter>
Not Filter:
<not-filter>
<payload-type-filter expectedType="java.lang.String"/>
</not-filter>
2.2 Transport and Module Filters
一些mule的transports和模块提供的自己的filter。这块的内容比较多,有时间单独介绍。
2.3 Custom Filters
当以上filter不能满足客户的需求时,你可以自定义filter。自定义filter需要实现Filter接口,该结构只包含一个方法:
public boolean accept(MuleMessage message);
当返回结果为true时,filter通过,否则没有通过。
<outbound>
<filtering-router>
<cxf:outbound-endpoint address="http://localhost:65071/services/EnterOrder?method=create"
synchronous="true"/>
<custom-filter class="org.mule.transport.http.filters.HttpRequestWildcardFilter">
<spring:property name="pattern" value="/services/EnterOrder?wsdl"/>
</custom-filter>
</filtering-router>
</outbound>
分享到:
相关推荐
Mule ESB 开源框架简介 Mule ESB 是一个基于 Java 的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB 支持集成现有系统而无论其底层采用何种技术,如 JMS、...
### MuleEsb开源框架详解 #### 一、MuleEsb框架概览 Mule Enterprise Service Bus(ESB)是一种先进的开源框架,专为现代企业的集成需求设计。Mule ESB的核心价值在于其强大的连接性和灵活性,使企业能够轻松整合...
【Mule ESB Studio v3.3 安装使用手册】是针对Mule ESB集成服务平台的一个详细指导,旨在帮助用户成功安装和使用Mule Studio。Mule ESB是一款强大的企业服务总线(ESB)工具,用于构建、部署和管理集成解决方案。...
### Mule ESB Studio安装使用手册 #### 一、初级教程概述 Mule ESB Studio是一款功能强大的集成开发工具,用于构建基于Mule ESB(Enterprise Service Bus)的应用程序和服务。Mule ESB是一个广泛应用于企业级应用...
### MULE ESB 节点使用说明中文文档 #### MULE ESB 概述与部署 MULE ESB(Enterprise Service Bus)是一种强大的集成平台,用于构建高度可扩展的应用程序和服务。它允许开发人员轻松地连接不同的应用程序、API 和...
**Mule ESB 日志记录组件:Kenny-loggings** Mule ESB(Enterprise Service Bus)是一款强大的集成平台,用于构建、部署和管理企业级应用的集成解决方案。在Mule ESB中,日志记录是至关重要的,因为它帮助开发者...
### Mule ESB 整体概念详解 #### 一、Mule ESB 概述 Mule ESB(Enterprise Service Bus)是一款基于Java的轻量级企业服务总线和集成平台,旨在帮助开发者快速便捷地连接不同的应用程序,并支持应用程序之间的数据...
Mule 3.2 是一款非常流行的集成平台,它基于企业服务总线(Enterprise Service Bus, ESB)架构设计而成,能够帮助开发者轻松地构建复杂的集成解决方案。本文将详细介绍 Mule 3.2 中的关键节点以及它们在构建集成应用...
在Mule ESB(现在称为Anypoint Platform)中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,尤其在API开发和集成场景中。JSON因其简洁、易读且易于处理的特点,被广泛用于发送和接收数据。本教程将...
Mule 是一个企业服务总线(Enterprise Service Bus, ESB)的消息框架,它被设计为轻量级且高度可扩展的ESB解决方案。Mule 的设计目标是简化企业应用程序之间的集成过程,同时确保系统的可维护性和可扩展性。 #### ...
- **图形化创建Mule ESB流程**:新手或非专业Mule开发者可以通过拖拽组件来创建复杂的ESB流程。 - **XML与图形界面切换**:有经验的Mule开发者可以在图形界面和XML编辑器之间自由切换,这有助于更好地理解和维护Mule...
Mule ESB是一种集成平台,用于构建连接不同系统和服务的应用程序。Mule的配置文件采用XML格式,组织成一棵XML元素树,其中包含了对服务、路由、转换器等关键组件的定义。 #### 二、基本标签及功能介绍 ##### 1. `...
3. Mule ESB是一个完整的ESB,包含额外的功能,但其集成逻辑可能较为复杂,适合大型企业。 4. Apache Camel的优势在于其丰富的组件库(超过100+),可以轻松地扩展和自定义,与Spring的集成也非常紧密,允许按需依赖...
其核心构建于另一个知名的 ESB 平台 Mule 之上,并针对医疗行业的特殊需求进行了扩展与定制化开发。Mirth 提供了丰富的功能支持,尤其是对于医疗标准格式的转换处理,使其成为医疗信息系统集成的理想工具。 #### ...