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的长度。四个字节整数。

最新文章

  1. 如何在本地电脑安装phpmyadmin及访问地址
  2. git 配置忽略文件(忽略UserInterfaceState.xcuserstate,Breakpoints_v2.xcbkptlist)
  3. codeforces——Little Pony and Sort by Shift
  4. java实现八皇后问题(递归和循环两种方式)
  5. lintcode:1-10题
  6. Altium查看所有快捷键,图文教程
  7. Docker入门之三容器
  8. Vue源码后记-其余内置指令(2)
  9. MyEclipse安装Eclipse Memory Analyzer插件以及使用例子
  10. HTTP深入浅出 http请求完整过程
  11. 使用git和github进行协同开发流程
  12. springboot使用@Schednled 注解实现定时任务
  13. ios tableView的header高度不对
  14. Vue-Vue列表渲染v-for
  15. OpenLayers典型部分概述
  16. day5-python数据类型
  17. UVALive 4877 Non-Decreasing Digits 数位DP
  18. 顺序表[A+B->C]
  19. iOS - 安全
  20. [TopCoder14647]HiddenRabbits

热门文章

  1. RPC-整体概念
  2. AtCoder Regular Contest 075 D Widespread
  3. mongoDB文档操作【增删改】
  4. django unresolved template
  5. TCP的三次握手和四次挥手+TCP和UDP的区别
  6. 用java实现word转html
  7. Linux编写Shell脚本
  8. 【python】抄写大神的百度贴吧代码
  9. SPOJ - AMR11H
  10. 怎么在32位windows系统上搭建爬虫框架scrapy?