1 需求说明
模仿dubbo,消费者和提供者约定接口和协议,消费者远程调用提供者,提供者返回一个字符串,消费者打印提供者返回的数据。底层网络通信使用 Netty 4.X
2 设计说明
1、创建一个接口,定义抽象方法。用于消费者和提供者之间的约定。
2、创建一个提供者,该类需要监听消费者的请求,并按照约定返回数据。
3、创建一个消费者,该类需要透明的调用自已不存在的方法,内部需要使用Netty请求提供者返回数据。
设计图如下:
3 编码
目录结构如下:
public interface HelloService {
String hello(String message);
}
@Slf4j
public class HelloServiceImpl implements HelloService {
private int count = 0;
//当有调用方调用该方法时,就返回一个结果
@Override
public String hello(String message) {
log.info("收到客户端的消息:{}",message);
if(message != null){
return "你好客户端, 我已经收到你的消息 [" + message + "] 第" + (++count) + " 次";
}else {
return "你好客户端, 我已经收到你的消息 ";
}
}
}
@Slf4j
public class NettyServerHandler extends ChannelInboundHandlerAdapter {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
//获取客户端发的消息,并调用服务
log.info("N