异步通信机制
源码精读
生产者发送消息
异步监听消息发送结果
创建一个线程池 用其中的一个线程去执行发送消息的动作
监听发送结果 如果有回调函数则调用回调函数 这里的onSuccess回调就是图1中的回调函数
1、一个请求对应一个请求编号 每次请求的发送都要先获取一个信号量锁 在服务器资源有限的情况下 防止调用太快导致服务不可用 2、一个请求编号对应一个响应结果 将对应关系保存在内存中 3、进行netty通信
NettyRemotingServer.NettyServerHandler 读取到发送过来的请求并处理
执行处理请求的逻辑
将该请求封装成一个任务 提交到业务线程池来处理 处理完之后 封装响应对象(包含请求编号) 发送给netty客户端
NettyRemotingClient 接收到netty server发送过来的响应数据
解析响应数据
通过请求编号从内存中获取未来响应对象 有回调函数则执行回调函数 没有回调函数则将响应对象封装到未来对象中
从线程池获取线程异步执行回调函数 然后就来到了图3的回调 图3回调到图1执行具体的onSuccess逻辑