美文网首页
基于Kubernetes的dubbo mock测试系统

基于Kubernetes的dubbo mock测试系统

作者: Lancelot_dh | 来源:发表于2022-03-10 17:54 被阅读0次

1、编写javaagent用于对dubbo invoke方案做切面处理

public class Agent {

    private static final Logger logger = LogManager.getLogger(Agent.class);

    public static void premain(String arguments, Instrumentation instrumentation)   {
 // 匹配被拦截方法    
  agentBuilder.type(named("com.alibaba.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker"))
                .transform(
                        new AgentBuilder.Transformer() {
                            @Override
                            public DynamicType.Builder<?> transform(DynamicType.Builder<?> builder, TypeDescription type, ClassLoader classLoader, JavaModule module) {
                                return builder.method(named("invoke")).intercept(
                                        MethodDelegation.withDefaultConfiguration().to(
                                                new CommonInterceptor(classLoader, "com.example.dubbomock.agent.DubboInvokeInterceptor")));
                            }
                        }
                ).installOn(instrumentation);

//注解方式l配置依赖的dubbo interface方式拦截
 agentBuilder.type(named("com.alibaba.dubbo.config.ReferenceConfig"))
                .transform(
                        //拦截器没有call 其他类加载器加载的类,无需做classloader转换
                        new AgentBuilder.Transformer() {
                            @Override
                            public DynamicType.Builder<?> transform(DynamicType.Builder<?> builder, TypeDescription type, ClassLoader classLoader, JavaModule module) {
                                return builder.method(named("createProxy")).intercept(
                                        MethodDelegation.to(DubboStartInterceptor.class));
                            }
                        }
                ).installOn(instrumentation);

}

相关文章

网友评论

      本文标题:基于Kubernetes的dubbo mock测试系统

      本文链接:https://www.haomeiwen.com/subject/yyfqdrtx.html