dubbo 拦截入参

  1. 创建 dubbo 的filter
    (com.alibaba.dubbo.rpc.Filter)
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.extension.Activate;
import com.alibaba.dubbo.rpc.*;
import com.alibaba.dubbo.rpc.service.GenericService;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
//该类只在生产者生效
@Activate(group = { Constants.PROVIDER })
@Component
@Slf4j
public class ParamFilter implements Filter {
	@Override
	public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {

		log.info("InterfaceName={},MethodName={},Parameter={}", invocation.getInvoker().getInterface().getName(),
				invocation.getMethodName(), invocation.getArguments());
		// 开始时间
		long startTime = System.currentTimeMillis();
		// 执行接口调用逻辑
		Result result = invoker.invoke(invocation);
		// 调用耗时
		long elapsed = System.currentTimeMillis() - startTime;
		// 如果发生异常 则打印异常日志
		if (result.hasException() && invoker.getInterface() != GenericService.class) {
			log.error("dubbo执行异常: ", result.getException());
		} else {
			log.info("InterfaceName={},MethodName={},Resposne={},SpendTime={} ms",
					invocation.getInvoker().getInterface().getName(), invocation.getMethodName(),
					JSON.toJSONString(new Object[] { result.getValue() }), elapsed);
		}
		// 返回结果响应结果
		return result;

	}

}

  1. 在resource目录下创建META-INF.dubbo目录,新建filter文件
paramFilter=xxx.xxx.ParamFilter   (xxx代表包名)
  1. 在dubbo接口类,添加注解 filter
@Service(interfaceClass = IConfigDubboService.class, version = "1.0.0", timeout = 240000,filter = "paramFilter")
@Component
@Slf4j
public class ConfigDubboServiceImpl implements IConfigDubboService {}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值