关于测试过程中直接调用rpc接口及定时器方法的一点思路

前言:东家系统是用dubbo做的微服务架构,按不同业务模块分出不同的dubbo服务,大大小小有几十个项目,项目之间都是通过rpc接口通信,测试过程经常遇到当前测试项目依赖其他项目的处理结果(rpc回调)而受其他项目服务异常影响阻塞测试,这是问题之一;为保证数据完整性和一致性,项目中用到了大量的定时任务去处理一些业务,定时任务的触发器虽说是可配的,但想要灵活控制定时任务的执行,还是有点麻烦,这是问题之二。这两个问题困扰笔者很久,一直没有思路,也苦于加班加到怀疑人生无心思考,直到有位同事提出一个思路:写一个rpc接口集成到公司项目中,再写一个web服务,提供http接口供测试同事通过http协议调用,在该http接口中通过泛化调用我们集成到公司项目的rpc接口,在rpc接口中再通过反射调用公司项目的方法,这样可以解决上面说的两个问题。当时听到这个idea简直眼前一亮,这位同事平时点子也多,和他共事算是在东家为数不多开心的事情之一。

废话说完了,开干。

简单图解:

涉及知识储备:springmvc、dubbo、java反射,对这些不熟的同学可以去百度了解下,这里不做展开。

1.编写web服务

1.1 请求参数DTO

package com.etyero.entity;

import com.alibaba.fastjson.JSONArray;

/**
 * RequestDTO
 * 
 * @author lijialong
 */
public class RequestDTO {
	private String targetService; // 目标类
	private String targetMethod; // 目标方法
	private JSONArray params; // 目标方法入参


	public String getTargetService() {
		return targetService;
	}

	public void setTargetService(String targetService) {
		this.targetService = targetService;
	}

	public String getTargetMethod() {
		return targetMethod;
	}

	public void setTargetMethod(String targetMethod) {
		this.targetMethod = targetMethod;
	}

	public JSONArray getParams() {
		return params;
	}

	public void setParams(JSONArray params) {
		this.params = params;
	}
}

1.2 编写controller,处理入参,泛化调用rpc。

package com.etyero.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logg
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值