dubbo源码阅读-Filter默认实现之TimeoutFilter

Posted 意犹未尽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dubbo源码阅读-Filter默认实现之TimeoutFilter相关的知识,希望对你有一定的参考价值。

/**
 * 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的主要内容,如果未能解决你的问题,请参考以下文章

dubbo源码阅读-Filter默认实现之CacheFiler

dubbo源码分析之过滤器Filter-12

dubbo源码阅读-服务订阅之远程订阅(dubbo)

dubbo源码阅读之SPI

Dubbo源码阅读系列之远程服务调用(上)

Dubbo Filter机制概述