WebRpcRetryFilter.java

package com.mycim.webapp.retry;

import com.alipay.sofa.rpc.core.exception.RpcErrorType;
import com.alipay.sofa.rpc.core.exception.SofaRpcException;
import com.alipay.sofa.rpc.core.request.SofaRequest;
import com.alipay.sofa.rpc.core.response.SofaResponse;
import com.alipay.sofa.rpc.ext.Extension;
import com.alipay.sofa.rpc.filter.AutoActive;
import com.alipay.sofa.rpc.filter.Filter;
import com.alipay.sofa.rpc.filter.FilterInvoker;

@Extension("customer")
@AutoActive(consumerSide = true)
public class WebRpcRetryFilter extends Filter {

    @Override
    public SofaResponse invoke(FilterInvoker invoker, SofaRequest request) throws SofaRpcException {
        SofaResponse sofaResponse = invoker.invoke(request);
        if (sofaResponse.isError() && sofaResponse.getErrorMsg().contains("RPC-020100011")) {
            throw new SofaRpcException(RpcErrorType.SERVER_BUSY, sofaResponse.getErrorMsg());
        }
        return sofaResponse;
    }

}