总共分为三步解决:
1、<dubbo:consumer retries="
s
h
o
p
I
n
i
t
C
o
u
n
t
"
t
i
m
e
o
u
t
=
"
{shopInitCount}" timeout="
shopInitCount"timeout="{dubbo.consumer.timeout}" check=“false” filter=“exceptionResolver”/>
2、src\main\resources\META-INF\dubbo\com.alibaba.dubbo.rpc.Filter
文件中指定:
exceptionResolver=com.weimob.mp.merchant.backstage.server.exception.MPExceptionReslover
3、
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.extension.Activate;
import com.alibaba.dubbo.rpc.*;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
/**
* 统一异常处理,如果存在没有catch住的异常,统一在此处封装成默认未知错误
*
* @author zhen.chen
* @description
* @date 2021/1/20 18:49
*/
@Slf4j
@Activate(group = Constants.PROVIDER, value = "exceptionResolver")
public class MPExceptionReslover implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
Result result = invoker.invoke(invocation);
log.info("dubbo.service接口:{}, method:{} ,执行结果:{},入参类型:{} , 入参 :{} ", invoker.getInterface().getName(), invocation.getMethodName(),
JSONObject.toJSONString(result), JSONObject.toJSONString(invocation.getParameterTypes()), JSONObject.toJSONString(invocation.getArguments()));
return result;
}
}