透明RPC开发模式允许用户通过简单的java interface像本地调用一样进行服务调用。
透明RPC仅仅是一种开发模式:
透明RPC开发模式与spring cloud的feign类似,不过更简单,因为不必在这个interface中增加任何RESTful annotation。
@Component public class SomeBean { ...... @RpcReference(microserviceName = "helloService", schemaId = "helloSchema") private Hello hello; ...... }
Hello hello = Invoker.createProxy("helloService", "helloSchema", Hello.class);
只需要使用jdk的CompletableFuture对返回值进行包装即可
interface Hello { CompletableFuture<String> sayHi(String name); }
同一个interface中,可以同时声明同一个方法的reactive和同步原型
因为要求方法名与契约中的operationId一一对应,而仅有返回值类型不同,在java中是非法的,所以需要修改方法名,并通过swagger annotation来声明真正的operationId
interface Hello { String sayHi(String name); @ApiOperation(nickname = "sayHi", value = "reactive method for sayHi") CompletableFuture<String> asyncSayHi(String name); }