RocketMQ(7)——通信协议
2024-08-27 13:27:46
RocketMQ(7)——通信协议
RocketMQ的通信协议其实很简单,但是无论是官方的用户手册,还是网上的博客,并没有很清晰简单地把其中所有的内容和原理讲明白。 对于需要扩展其他语言SDK的开发来说,意味着必须要深入到Java源码才能弄懂其概念。
笔者通过深入源码,本文希望以尽量简短的语言描述清楚协议的每个字段及其意义。注:现最新版RocketMQ已经可以支持Protobuf协议,但本文只探究默认的基于JSON的协议。
无论是发送消息,拉取消息,还是发送心跳等所有的网络通讯层协议(客户端与broker/nameserver间,broker与nameserver间)都使用一套一样的协议。并且无论请求还是响应,协议是一样的,协议头的字段也是固定的。
通讯协议
协议分为以下四部分:
其中后两部分是通讯的实际数据。前两段都是四个字节的整形,分别表示两段实际数据的长度。
- header: 协议的头,数据是序列化后的json。json的每个key字段都是固定的,不同的通讯请求字段不一样。后面解释
- body: 请求的二进制实际数据。例如发送消息的网络请求中,body中传输实际的消息内容。
- length:2 3 4 端整体的长度。四个字节整数。
- header length: header的长度。四个字节整数。
最新文章
- 如何在本地电脑安装phpmyadmin及访问地址
- git 配置忽略文件(忽略UserInterfaceState.xcuserstate,Breakpoints_v2.xcbkptlist)
- codeforces——Little Pony and Sort by Shift
- java实现八皇后问题(递归和循环两种方式)
- lintcode:1-10题
- Altium查看所有快捷键,图文教程
- Docker入门之三容器
- Vue源码后记-其余内置指令(2)
- MyEclipse安装Eclipse Memory Analyzer插件以及使用例子
- HTTP深入浅出 http请求完整过程
- 使用git和github进行协同开发流程
- springboot使用@Schednled 注解实现定时任务
- ios tableView的header高度不对
- Vue-Vue列表渲染v-for
- OpenLayers典型部分概述
- day5-python数据类型
- UVALive 4877 Non-Decreasing Digits 数位DP
- 顺序表[A+B->;C]
- iOS - 安全
- [TopCoder14647]HiddenRabbits