Dubbo添加过滤器(二)---日志打印接口耗时

Dubbo添加过滤器

详情见: https://www.cnblogs.com/expiator/p/14557091.html
本文主要是用Dubbo添加过滤器,统计接口耗时

日志打印接口耗时

import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.extension.Activate;
import com.alibaba.dubbo.rpc.*;

/**
 * 日志打印接口耗时
 */
@Activate(group = {Constants.PROVIDER, Constants.CONSUMER})
public class CostTimeFilter implements Filter {

    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        long start = System.currentTimeMillis();
        Result result = invoker.invoke(invocation);
        long end = System.currentTimeMillis();
        long cost = end - start;
        //打印接口耗时时间
        if (invoker.getUrl() != null) {
            log.info("interfaceName:{}, methodName:{},arguments:{}, cost time:{}ms",
                    invoker.getInterface(), invocation.getArguments(), invocation.getArguments(), cost);
        }
        return result;
    }

}

配置Filter

在路径 src/main/resources/META-INF 添加文件夹,名称为 dubbo,
在dubbo文件夹下添加一个文件(注意,这个是文件),名称为 com.alibaba.dubbo.rpc.Filter 。
内容如下,变量名随意取,值为Filter实现类的路径 ,如果有多个过滤器,就写多行,如下 :

timesFilter=com.service.filter.CostTimeFilter

Filter作用范围

在dubbo配置文件中的 <dubbo:service /> 、<dubbo:reference />里面,添加 Filter属性。
<dubbo:service /> 是服务提供者,用于暴露服务。<dubbo:reference />是服务消费者。
如下,添加filter就可以进行过滤了,filter对应的值为 com.alibaba.dubbo.rpc.Filter文件中的变量名。

<bean class="com.service.impl.UserServiceImpl" id="userService"/>
<dubbo:service filter="timesFilter" document="userServiceCofiguration" interface="com.service.UserService" protocol="rest" ref="userService" />

添加filter属性后,就可以使过滤器生效了。
如果想要添加多个过滤器,可以按照同样的配置添加,然后 filter="charFilter" 改成类似 filter="timesFilter,charFilter" 这种逗号隔开的格式就可以了。

posted on   乐之者v  阅读(501)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示