ZRPC ZRPC服务端客户端异步调用单向调用 基于 Netty 实现的 RPC 框架

程序名称:ZRPC ZRPC服务端客户端异步调用单向调用

授权协议: GPL

操作系统: 跨平台

开发语言: Java

ZRPC ZRPC服务端客户端异步调用单向调用 介绍

ZRPC

基于Netty实现的RPC框架

服务端

  RpcServer server = new RpcServer("127.0.0.1",1234);
  HelloServiceImpl impl = new HelloServiceImpl();
  server.export(HelloService.class, impl);

客户端

  RpcClient client = new RpcClient("127.0.0.1",1234);
  HelloService service = client.refer(HelloService.class);
  //同步调用
  System.out.println(service.hello("test rpc"));

异步调用

默认的远程调用都是同步的,发起异步调用需要设置RpcContext.setAsync(true),异步调用有两种方式:Future方式、callback方式,可以单独使用也可以混合使用

  • Future方式

    RpcClient client = new RpcClient(“127.0.0.1”,1234);
      HelloService service = client.refer(HelloService.class);
      RpcContext ctx = RpcContext.getContext();
      ctx.setAsync(true);
      String obj=service.hello(“test rpc”);
      System.out.println(obj==null);
      Future f =ctx.getFuture();
      System.out.println(f.get());

  • callback方式

    RpcClient client = new RpcClient(“127.0.0.1”,1234);
      HelloService service = client.refer(HelloService.class);
      RpcContext ctx = RpcContext.getContext();
      ctx.setAsync(true);
      ctx.setCallback(new Callback() {

    @Override
            public void onSuccess(Object result) {
                System.out.println(“success  ”+ result);
            }
            @Override
            public void onError(Throwable thr) {
                   System.out.println(“error”);
                   thr.printStackTrace();
            }
            });
      String obj=service.hello(“test rpc”);
      System.out.println(obj==null);

单向调用

单向调用是一种特殊类型的异步调用,意味着客户端对本次调用不期待服务端的响应结果。实际上服务端对于单向调用请求也不会作出响应。对于特定场景单向调用性能更好,但并不那么可靠。

//单向调用
  RpcContext ctx = RpcContext.getContext();
  ctx.setOneway(true);
  System.out.println(service.hello("test rpc")==null);

ZRPC ZRPC服务端客户端异步调用单向调用 官网

http://git.oschina.net/sandyfog/zrpc

相关编程语言

BlazeDS 是一个基于服务器的Java 远程控制(remoting...
OVal 是一个可扩展的Java对象数据验证框架,验证的规...
Volta 是一套开发工具,专为开发分布式、实时系统应...
OpenDDS 是一个开源的 C++ 实现的 对象管理组织 OMG...
JADE (Java Agent DEvelopment Framework) 是一个完...
FastMM ,在D2006和2007中已代替了原来的内存管理器。