Mule ESB的filter

阅读更多

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对象的类型,如:

       

 

    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:

        jxpath:

        ongl:  或  

 

    2.1.3 RegEx Filter

        对message的payload使用正则表达式匹配,payload需要支持toString方法,因此可以使用AndFilter结合PayloadTypeFilter校验payload的类型。

       

 

    2.1.4 Wildcard Filter

        使用通配符对massage的payload进行匹配,payload需要支持toString方法,因此可以使用AndFilter结合PayloadTypeFilter校验payload的类型。

       

 

    2.1.5 Exception Type Filter

        一个匹配异常类型的filter。

       

 

    2.1.6 Message Property Filter

        该filter支持基于message property属性的业务逻辑过滤,这个过滤器非常强大,这时因为message的properties属性是对外公开的,用户可以自定义property的属性。

        属性匹配默认是大小写敏感的,可以通过caseSensitive进行修改,如:

       

 

    2.1.7 Logic Filters

        Logic Filters包含三类:And, Or, and Not。由于它可以嵌套其他的filter,所以filter的逻辑可以进行组合。

        And Filter: 

       

       

       

       

 

        Or Filter:

       

       

       

       

 

        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通过,否则没有通过。








 

你可能感兴趣的:(mule,esb,filter)