RPC调用流程
流程描述:
1.服务调用者发送请求(interface#method#args)
2.客户端进行StringEncode编码
3.数据写到服务提供者
4.服务提供者接受请求
5.将接收的包进行StringDecode解码
6.服务提供方调用对应api
7.服务提供方响应方法调用结果
8.服务提供方将结果集进行StringEncode编码
9.服务提供方发送结果集包到服务调用者
10.服务调用者接受数据包
11.服务调用者将数据包进行StringDecode解码
12.服务调用者输出方法调用结果集
代码流程:
服务端接口:
package com.hx.zbhuang.netty.dubboCall;
/**
* 远程服务接口
*/
public interface HelloService {
String hello(String mes);
String say(String msg);
}
服务端接口实现类:
package com.hx.zbhuang.netty.dubboCall;
/**
* 远程服务实现类
*/
public class HelloServiceImpl implements HelloService {
@Override
public String hello(String msg) {
if(msg!=null) {
return "hello 豆腐蛋,i accept you msg:["+msg+"]";
} else {
return "hello 豆腐蛋,i accept you msg";
}
}
@Override
public String say(String msg) {
return "hello 豆腐蛋" + "==msg:"+msg;
}
}
服务端初始化:
package com.hx.zbhuang.netty.dubboCall;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.string.StringD