# delta-rpc **Repository Path**: derlta/delta-rpc ## Basic Information - **Project Name**: delta-rpc - **Description**: rpc - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-31 - **Last Updated**: 2021-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # a sample demo for rpc to study 1.基于netty高性能NIO通信框架 2.基于全注解使用 3.实现自动装配 4.使用zookeeper注册中心 5.对spring进行扩展 6.将服务端和客户端进行解耦,分别引入不同和jar包 7.同步调用和异步调用分别实现 8.使用连接池缓存tcp连接 9.基于JDK8,大量使用lamada表达式,以及函数接口 10.不同分支侧重的功能不同,以及代码优化。 分支介绍: https://github.com/sxlsjf/delta-rpc/tree/future-promise-2.1.0 这个分支是采用promise编程范式实现的异步调用,https://github.com/sxlsjf/delta-rpc/tree/feature-asyn-v2.0 此分支分别实现同步异步调用,与采用promise的方式稍有不同 测试步骤 1.开启zookeeper,地址127.0.0.1:2181 2.启动服务端代码,spring boot项目 @SpringBootApplication @ServiceScan(basePackage = {"com.sxl.sample.test.provider"}) public class TestProviderApplication { public static void main(String[] args) { SpringApplication.run(TestProviderApplication.class, args); } } 服务端测试案列 public interface PromiseService { Promise sayHello(String say); } @DeltaService(value = PromiseService.class,version = "1.0.0") public class PromiseServiceImpl implements PromiseService { public Promise sayHello(String say) { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("打印消费端传过来的参数:"+say); //返回的对象用promise实现类包装 return new LightDeferred(say); } } 3.启动消费端代码。spring boot项目 @SpringBootApplication public class TestConsumerApplication { public static void main(String[] args) { SpringApplication.run(TestConsumerApplication.class, args); } } 消费端测试案例: @RestController public class MyController { @RpcReference(version = "1.0.0") private PromiseService promiseService; @RequestMapping("/index") public String say(){ System.out.println("同步调用当前线程:"+Thread.currentThread().getName()); promiseService.sayHello("i love you").then(System.out::println) .then(t-> System.out.println("result:"+t)) .then(t-> System.out.println("reslut2:"+t)) .onSuccess(t-> System.out.println("成功执行")) .onFail(e->{ throw new RuntimeException(); }); return "success"; } } 4.项目结构