码迷,mamicode.com
首页 > 其他好文 > 详细

dubbo源码阅读-Filter默认实现(十二)之TimeoutFilter

时间:2020-03-16 17:34:03      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:parameter   配置   row   pre   time   rri   integer   class   eth   

/**
 * Log any invocation timeout, but don‘t stop server from running
 * 服务于服务提供者
 */
@Activate(group = Constants.PROVIDER)
public class TimeoutFilter implements Filter {

    private static final Logger logger = LoggerFactory.getLogger(TimeoutFilter.class);

    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        //获得开始时间
        long start = System.currentTimeMillis();
        //执行调用
        Result result = invoker.invoke(invocation);
        //计算耗时
        long elapsed = System.currentTimeMillis() - start;
        //超过提供者配置的timeout 配置 则打印告警日志
        if (invoker.getUrl() != null
                && elapsed > invoker.getUrl().getMethodParameter(invocation.getMethodName(),
                "timeout", Integer.MAX_VALUE)) {
            if (logger.isWarnEnabled()) {
                logger.warn("invoke time out. method: " + invocation.getMethodName()
                        + " arguments: " + Arrays.toString(invocation.getArguments()) + " , url is "
                        + invoker.getUrl() + ", invoke elapsed " + elapsed + " ms.");
            }
        }
        return result;
    }

}

 

dubbo源码阅读-Filter默认实现(十二)之TimeoutFilter

标签:parameter   配置   row   pre   time   rri   integer   class   eth   

原文地址:https://www.cnblogs.com/LQBlog/p/12505220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!