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