`
fantaxy025025
  • 浏览: 1329214 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

dubbo 自定义过滤器,打印接口调用信息

 
阅读更多

 

from:http://blog.csdn.net/doctor_who2004/article/details/48877591

dubbo 自定义过滤器,打印接口调用信息

 

       dubbo提供了web filter类似的com.alibaba.dubbo.rpc.Filter,这样,我们可以在dubbo提供的服务提供方和消费方都可以自定义过滤器,从而可以获得方法调用的时间或参数、返回结果及异常信息。我们可以利用log打印出来。而且,这个过滤器机制,也是分布式跟踪系统的一部分。

      下面代码实例是一个自定义过滤器例子,获得方法调用的参数、返回结果、执行时间及异常信息的log功能。

 

[java] view plain copy
 
  1. public class ElapsedTimeFilter implements Filter {  
  2.   
  3.     private static Logger log = LoggerFactory  
  4.             .getLogger(ElapsedTimeFilter.class);  
  5.   
  6.     @Override  
  7.     public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {  
  8.         long start = System.currentTimeMillis();  
  9.         Result result = invoker.invoke(invocation);  
  10.         long elapsed = System.currentTimeMillis() - start;  
  11.         if (invoker.getUrl() != null) {  
  12.   
  13.             // log.info("[" +invoker.getInterface() +"] [" + invocation.getMethodName() +"] [" + elapsed +"]" );  
  14.             log.info("[{}], [{}], {}, [{}], [{}], [{}]   ", invoker.getInterface(), invocation.getMethodName(),   
  15.                          Arrays.toString(invocation.getArguments()), result.getValue(),  
  16.                        result.getException(), elapsed);  
  17.   
  18.         }  
  19.         return result;  
  20.     }  
  21.   
  22. }  


其实,dubbo内部,也有很多已经实现好的不同功能的过滤器,如:

 

 

我们自定义了过滤器,还的按照dubbo spi机制,还得需要配置:

在服务消费方或提供方还需要配上这个过滤器,消费方例子:

 

[html] view plain copy
 
  1. <dubbo:consumer id="xx"  
  2.                     
  3.                     filter="elapsedTimeFilter"  
  4.                      
  5.                     retries="0"/>  
  6.                    



 

 

具体详见官方文档。


+
+
+
=
=
=

 

分享到:
评论

相关推荐

    dubbo捕获自定义异常_dubbo异常捕获_dubbo异常_自定义异常_捕捉异常_

    Dubbo 提供了 `Filter` 机制,你可以自定义一个异常过滤器来捕获和处理异常。例如,创建一个名为 `CustomExceptionHandlerFilter` 的过滤器: ```java public class CustomExceptionHandlerFilter implements ...

    dubbo过滤器_puml_framerk4_过滤器uml_

    4. **源码阅读与分析**:通过阅读Dubbo的源码,学习过滤器的内部工作原理,以及如何自定义过滤器以满足特定需求。 5. **开发实践与优化建议**:根据提供的文档和开发建议,理解如何在实际项目中合理运用过滤器,...

    Dubbo+Zookeeper+SpringMVC实现分布式服务治理框架(附件含源码)

    Dubbo提供了多种高级特性,如服务分组、版本控制、服务过滤器和容错机制等。通过这些特性,开发者可以更好地管理和维护复杂的分布式系统。 接着,Zookeeper作为一个分布式协调服务,是Dubbo实现服务注册与发现的...

    dubbo-dubbo-2.7.2源码

    Dubbo的过滤器机制允许在服务调用前后插入自定义逻辑,形成一个过滤器链。过滤器可以用来实现日志记录、性能监控、安全控制等功能,增强了系统的扩展性。 八、异步调用与回调 Dubbo支持同步调用和异步调用两种模式...

    dubbo源码分析系列

    - 过滤器链:了解过滤器在Dubbo中的作用,以及如何编写自定义过滤器实现特定功能。 通过对《Dubbo源码分析系列》的学习,开发者不仅可以掌握Dubbo的基本使用,还能深入理解其设计思想,从而更好地在实际项目中应用...

    基于dubbo的消费方完整项目示例

    接口,添加自定义过滤器,进行业务逻辑增强。 - **自定义Protocol**: 如果需要自定义通信协议,可以实现`com.alibaba.dubbo.remoting.Transporter`接口。 通过深入学习和实践"**dubbo-soa-consumer**"项目,开发者...

    DUBBO 中文帮助文档

    服务过滤器(Filter)是 Dubbo 中的一个强大特性,允许在服务调用前后添加自定义逻辑。开发者可以通过 `Filter` 属性添加过滤器,实现诸如日志记录、限流、鉴权等功能。 十、SPI 扩展机制 Dubbo 基于 Java SPI...

    dubbox增加过滤器功能(附代码)

    接口或使用 SPI 机制来添加自定义过滤器。 下面是一步步实现过滤器功能的步骤: 1. **创建过滤器类**: 创建一个新的 Java 类,实现 `Filter` 接口。例如,我们可以创建一个名为 `MyFilter` 的类: ```java ...

    dubbo使用的dtd

    6. **过滤器(Filter)**:Dubbo支持自定义服务调用的过滤器,可以实现如日志记录、限流、熔断等功能。在`&lt;dubbo:filter&gt;`元素中添加过滤器配置,可以增强服务的安全性和稳定性。 7. **监控(Monitor)**:Dubbo还...

    dubbo-consumer.zip

    6. **扩展点**:Dubbo遵循插件化设计,允许开发者自定义服务过滤器、协议、序列化方式等。`dubbo-consumer`中可能包含这些扩展点的相关配置和实现。 三、实战应用 在实际开发中,`dubbo-consumer`模块的应用场景...

    dubbo的初级到高级,分布式系统架构视频

    - **服务过滤器**:Dubbo支持自定义服务过滤器,用于对请求和服务结果进行预处理或后处理。 #### 五、Dubbo的扩展性 - **SPI(Service Provider Interface)**:Dubbo采用了SPI机制,使得用户可以轻松地替换或扩展...

    dubbo相关文件

    6. **服务过滤器(Filter)**:服务过滤器允许在服务调用前后插入自定义逻辑,例如日志记录、性能监控、安全检查等。用户可以通过配置实现自己的过滤器,增强服务的可扩展性。 7. **服务调用模型(Invocation & ...

    dubbo xsd

    6. **过滤器(Filter)配置**:`&lt;dubbo:filter&gt;`允许添加自定义的业务逻辑或监控拦截器,增强了服务的可扩展性。 7. **其他扩展配置**:Dubbo.xsd还支持服务级别的配置,如服务质量控制、负载均衡策略、服务路由...

    dubbo2.8.4.jar

    服务过滤器是Dubbo实现业务逻辑增强和处理的关键组件,可以插入到服务调用链中,执行额外的操作,如认证、限流、日志记录等。拦截器则提供了AOP(面向切面编程)的能力,可以在调用前后执行特定逻辑,进一步增强了...

    dubbo应用实例源码工程

    8. **服务过滤器与拦截器**:Dubbo允许添加自定义的过滤器和拦截器,实现服务调用前后的扩展逻辑。源码会展示如何编写和注册这些组件。 9. **服务测试**:源码工程可能包含了单元测试和集成测试,用于验证服务的...

    dubbo的.xsd文件分享

    除了基本配置,`dubbo.xsd`还允许通过`&lt;dubbo:filter&gt;`标签添加自定义的过滤器,这样可以在服务调用前后执行特定的逻辑,实现服务拦截、日志记录、性能监控等功能。此外,通过`&lt;dubbo:monitor&gt;`可以设置监控中心,对...

    dubbo-dubbo-2.5.10管理平台代码

    包中,可以看到各种过滤器的实现,它们在调用链路中起到了处理异常、控制流量等作用。 6. **配置管理**:Dubbo的配置可以通过`com.alibaba.dubbo.config`包下的类进行管理,如`ApplicationConfig`、`ProviderConfig...

    Dubbo源码(注释版)

    `StatFilter`是监控过滤器,会在每次调用前后记录相关信息。同时,Dubbo支持与其他监控系统集成,如Hadoop的Metrics2、Spring Boot Actuator等。 六、服务配置 Dubbo的配置可以通过XML、API、注解三种方式进行,`...

    第四课:Dubbo调用模块详解1

    5. **Filter**:过滤器链,可以添加自定义拦截器来扩展功能。 调用流程大致如下: 1. 消费者通过`ReferenceConfig`创建服务引用。 2. 生成代理对象,调用代理方法时,会触发`Invoker`的调用。 3. `Invoker`根据负载...

    dubbo.xsd资源

    9. **扩展性**:Dubbo.xsd允许开发者自定义扩展点,比如自定义协议、序列化方式、过滤器等,增强了框架的灵活性和可扩展性。 10. **部署与应用**:在实际项目中,开发者通常会创建一个基于dubbo.xsd的XML配置文件,...

Global site tag (gtag.js) - Google Analytics