博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Netty实现的轻量级分布式服务框架
阅读量:6980 次
发布时间:2019-06-27

本文共 2508 字,大约阅读时间需要 8 分钟。

对分布式技术比较感兴趣,于是在闲暇时间写了一个简单的RPC框架娱乐一下,项目持续更新中......

GitHub项目地址:

如果感觉Pudding对你有帮助可以顺手点个Star哦......哈哈

直接看一下示例代码吧

第一步: 启动注册中心

public class RegistryTest {    public static void main(String[] args) {        // 创建服务注册中心        ServiceRegistry registry = new DefaultServiceRegistry();        // 启动注册中心        registry.startRegistry(20000);    }}

第二步: 启动服务提供者

public class ProviderTest {    public static void main(String[] args) {        // 创建服务提供者和服务包装器        ServiceProvider provider = new DefaultServiceProvider();        ServiceWrapper serviceWrapper = new DefaultServiceWrapper();        // 连接注册中心        provider.connectRegistry("127.0.0.1:20000");        // 创建服务        MyService myService = new MyServiceImpl();        // 包装服务为ServiceMeta        Service service = serviceWrapper.build(myService, "127.0.0.1:30001");        // 启用服务        provider.startService(service);        // 发布所有已启用的服务        provider.publishAllService();    }}

第三步: 启动服务消费者

同步调用

public class SyncConsumerTest {    public static void main(String[] args) {        // 创建服务消费者        ServiceConsumer serviceConsumer = new DefaultServiceConsumer();        // 连接注册中心        serviceConsumer.connectRegistry("127.0.0.1:20000");        // 订阅服务        serviceConsumer.subscribeService(MyService.class);        // 创建同步服务代理        MyService myService = ProxyFactory.createSyncProxy(MyService.class);        try {            // 发起调用            int result = myService.add(100, 200);            System.out.println("调用结果: " + result);        } catch (InvokeTimeoutException e) {            System.out.println("远程调用超时");        } catch (InvokeFailedException e) {            System.out.println("远程调用失败");        }    }}

异步调用

public class AsyncConsumerTest {    public static void main(String[] args) {        // 创建服务消费者        ServiceConsumer serviceConsumer = new DefaultServiceConsumer();        // 连接注册中心        serviceConsumer.connectRegistry("127.0.0.1:20000");        // 订阅服务        serviceConsumer.subscribeService(MyService.class);        // 创建同步服务代理        MyService myService = ProxyFactory.createAsyncProxy(MyService.class);        // 发起调用        myService.add(100, 200);        // 监听调用结果        InvokeFuture.addInvokeFutureListener(new InvokeFutureListener
() { @Override public void success(Integer result) { System.out.println("调用结果: " + result); } @Override public void failure(Exception e) { e.printStackTrace(); } }); }}

转载地址:http://tejpl.baihongyu.com/

你可能感兴趣的文章
《Python面向对象编程指南》——2.8 __new__()方法和不可变对象
查看>>
ROS机器人程序设计(原书第2版)第1章 ROS Hydro系统入门
查看>>
《Android平板电脑开发秘籍》——3.9节技巧:创建一个下拉列表式的ActionBar
查看>>
《软件工程(第4版?修订版)》—第1章1.4节软件工程涉及的人员
查看>>
剖析一个java对象初始化顺序问题
查看>>
《Python和Pygame游戏开发指南》——1.7 安装Pygame
查看>>
reveal.js实现html播放ppt的炫酷效果
查看>>
《HTML5 canvas开发详解(第2版)》——2.12 检查一个点是否在当前路径
查看>>
《深入理解Scala》——第2章,第2.1节学习使用Scala交互模式(REPL)
查看>>
在Tableau中自定义版块地图
查看>>
《黑客秘笈——渗透测试实用指南(第2版)》—第2章2.1节被动信息搜索——开源情报(OSINT)...
查看>>
《21天学通HTML+CSS+JavaScript Web开发(第7版)》——1.7 作业
查看>>
微服务,微架构[一]之springboot[helloWorld]
查看>>
MySql导入CSV文件或制表符分割的文件
查看>>
《机器学习与R语言(原书第2版)》一1.2 机器学习的使用与滥用
查看>>
Android Monkey原理探讨
查看>>
PostgreSQL 10.0 preview 功能增强 - 老板特性, LONG SQL过程可视 pg_stat_progress_vacuum
查看>>
微服务架构是什么
查看>>
AngularJS 自定义服务
查看>>
proxy 动态代理
查看>>