Filter 扩展
eg:日志扩展:
//@Activate(group = {Constants.PROVIDER, Constants.CONSUMER})
@Activate(group = Constants.PROVIDER)
public class TraceLogFilter implements Filter {
private static final Logger logger = LoggerFactory.getLogger(TraceFilter.class);
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
Result result = null;
String role = invoker.getUrl().getParameter(Constants.SIDE_KEY);
if (Constants.CONSUMER.equals(role)) {// consumer
String tradeId = UUID.randomUUID().toString();
RpcContext.getContext().setAttachment("tradeId", tradeId);
logger.info(role+" traceId===>"+tradeId );
} else if (Constants.PROVIDER.equals(role)) {// provider
String tradeId = RpcContext.getContext().getAttachment("tradeId");
logger.info(role+" traceId===>"+tradeId );
}
try {
result = invoker.invoke(invocation);
} catch (Exception e) {
throw new RpcException(e);
}
return result;
}
}