zoukankan      html  css  js  c++  java
  • 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;
        }
    
    }
  • 相关阅读:
    电影观后感
    自定义内存管理
    web.xml配置详解
    Annotation
    Centos中yum方式安装java
    linux下添加用户并赋予root权限
    Injector
    Container
    GlassFish的安装与使用(Windows)
    Version Control
  • 原文地址:https://www.cnblogs.com/LQBlog/p/12505220.html
Copyright © 2011-2022 走看看