一个基于Netty4实现的轻量级rpc框架:mrpc

MRpc

这是一个在github上发现的轻量级rpc框架,还处在更新阶段。

一个基于Netty4实现的轻量级rpc框架:mrpc

这是一个在github上发现的轻量级rpc框架,还处在更新阶段。 这是一个不需要集成注册中心,仅通过简单的管理方式进行服务端的管理,但也足够实现中小项目的rpc交互的小型框架。

这是一个不需要集成注册中心,仅通过简单的管理方式进行服务端的管理,但也足够实现中小项目的rpc交互的小型框架。

一个基于Netty4实现的轻量级rpc框架:mrpc

项目内容

项目包括:

mrpc-common(公用包,主要是序列化工具、请求返回实体、异常处理等类)

mrpc-client(mrpc客户端包,主要是用于接入监听,发送请求消息,接受服务端消息)

mrpc-server(mrpc服务端包,主要是用于监听端口,接受客户端消息,调用处理类,返回处理结果消息)

此外,还提供了example包,便于quickstart。

我们来看一下example对mrpc的调用方式:

mrpc-example-server

服务端:

  1. 服务端中通过@EnableMRpcServer引入mrpc-server
@SpringBootApplication
@EnableMRpcServer
public class MRpcExampleServerApp {
public static void main(String[] args) {
SpringApplication.run(MRpcExampleServerApp.class, args);
}
}
  1. 在配置文件指定mrpc-server监听端口
mrpc.server.port=9090
  1. 在提供出去的服务类上增加注解@MRpcService并指定服务名
@Service
@MRpcService(serviceName = "testService")
public class TestServiceImpl implements TestService {
@Override
public String testMethod() {
return "testSuccess";
}
}

mrpc-example-client

客户端:

  1. 在配置文件指定服务端的ip+port
mrpc.server.host=127.0.0.1
mrpc.server.port=9090
mrpc.server.desc=test
  1. 注入配置文件所配置的服务,例子表示:mrpcTestClient便代表该监听9090端口的那个mrpc-server
@Configuration
public class MRpcExampleClientConfig {
@Bean("mrpcServerTest01")
@ConfigurationProperties(prefix = "mrpc.server")
public MRpcProperties mRpcProperties() {
return new MRpcProperties();
}
@Bean("mrpcTestClient")
public MRpcClientSrv mRpcClientSrv(@Qualifier("mrpcServerTest01")MRpcProperties mRpcProperties){

return new MRpcClientSrvImpl(mRpcProperties);
}
}
  1. 客户端中通过@EnableClientConfiguration引入mrpc-client
@SpringBootApplication
@EnableClientConfiguration
public class MRpcExampleClientApp {
public static void main(String[] args) {
SpringApplication.run(MRpcExampleClientApp.class, args);
}
}
  1. 通过普通调用的方式(mRpcClientSrv.excute),进行服务端方法的调用,例子中通过mRpcClientSrv.excute(mRpcRequest)来调用服务端的方法
@SpringBootApplication
@EnableClientConfiguration
@Controller
public class MRpcExampleClientApp {
@Autowired
@Qualifier("mrpcTestClient")
private MRpcClientSrv mRpcClientSrv;
public static void main(String[] args) {
SpringApplication.run(MRpcExampleClientApp.class, args);
}
@RequestMapping("/mrpc/test")
public void test() {
HashMap<class>,Object> arg = new HashMap<>();
arg.put(String.class, "123");
MRpcRequest mRpcRequest = new MRpcRequest();
mRpcRequest.setId("1");
mRpcRequest.setArguments(arg);
mRpcRequest.setServiceName("testService");
mRpcRequest.setMethodName("testMethod");
MRpcResponse response = mRpcClientSrv.excute(mRpcRequest);
System.out.println(response);
}
}
/<class>

GitHub地址:https://github.com/mimose/mrpc


分享到:


相關文章: