supine是一个轻量级去中心的RPC框架
创建Maven项目
Maven
<dependency> <groupId>vip.justlive</groupId> <artifactId>supine</artifactId> <version>${lastVersion}</version> </dependency>
或Gradle
Gradle
compile 'vip.justlive:supine:$lastVersion'
服务端
直连方式
ServiceConfig config = new ServiceConfig(10086); ServiceFactory factory = new ServiceFactory(config);
// 注册服务 factory.register(new SayImpl()); factory.register(new SayImpl2(), “2”);
factory.start(); // 服务端常驻 factory.sync();
multicast注册
ServiceConfig config = new ServiceConfig(10086);
// 设置注册类型 config.setRegistryType(1);
// 设置注册地址,不设置时使用默认值(234.69.69.69:56969) config.setRegistryAddress(“234.69.69.69:56969”); ServiceFactory factory = new ServiceFactory(config);
// 注册服务 factory.register(new SayImpl()); // 指定服务版本 factory.register(new SayImpl2(), “2”);
客户端
ClientConfig config = new ClientConfig();
// 设置长连接空闲超时时间,默认120秒 config.setIdleTimeout(120);
// 直连时设置服务端地址 config.setRegistryAddress(“localhost:10086”);
// 是否异步调用,默认为同步 config.setAsync(false); ReferenceFactory factory = new ReferenceFactory(config);
// 创建接口代理 Say say = factory.create(Say.class); // 调用接口 String result = say.hello(msg);
multicast方式
// 开启异步调用 config.setAsync(true);
// 指定注册地址,不填则使用默认值(234.69.69.69:56969) config.setRegistryAddress(“234.69.69.69:56969”); ReferenceFactory factory = new ReferenceFactory(config);
// 创建指定版本的接口代理 Say say = factory.create(Say.class, “2”); // 调用接口,注意异步方式返回值为null say.hello(msg);
// 异步方式下需要调用如下方法获取Future ResultFuture future = ResultFuture.future();
// 设置回调 future.setOnSuccess(System.out::println); future.setOnFailure(System.out::println);
// 获取结果 future.get(); // 获取结果,有等待超时时间 future.get(1, TimeUnit.SECONDS);