您的位置:首页 > 其它

RocketMQ原理解析-Remoting2. 通信层底层传输协议

2017-12-21 18:20 579 查看
http://blog.csdn.net/quhongwei_zhanqiu/article/details/39154155

RocketMq服务器与客户端通过传递RemotingCommand来交互,通过NettyDecoder,对RemotingCommand进行协议的编码与解码 协议格式
<length> <header length> <header data> <bodydata>

1 2 3 4
协议分4部分,含义分别如下
1、大端4个字节整数,等于2、3、4长度总和
2、大端4个字节整数,等于3的长度
3、使用json序列化数据
4、应用自定义二进制序列化数据



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



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

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



NettyDecoder

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: