首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

RocketMQ原理解析-Remoting

RocketMQ原理解析-Remoting

Remoting2. 通信层底层传输协议RocketMq服务器与客户端通过传递RemotingCommand来交互,通过NettyDecoder,对RemotingCommand进行协议的编码与解码

协议格式 <length> <header length> <header data> <bodydata>

            1        2               3          4

协议分4部分,含义分别如下

[url=][/url]
1、大端4个字节整数,等于2、3、4长度总和2、大端4个字节整数,等于3的长度3、使用json序列化数据4、应用自定义二进制序列化数据[url=][/url]




Header部分数据是通过FastJson序列化数据



请求自定义字段都会实现CommandCustomHeader接口,在RemotingCommand序列化之前会将CommandCustomHeader的字段拷贝到Header的extFields中去,让后在整体通过Fastjson序列化

Netty通过NettyEncoder、NettyDecoder自定义实现将RemotingCommand转换成byte[]
NettyEncoder:


NettyDecoder


Remoting3.通信层整体交互图
返回列表