zoukankan      html  css  js  c++  java
  • RocketMQ(7)——通信协议

    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的长度。四个字节整数。
  • 相关阅读:
    回调函数
    未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包
    顶帽变化(转载)
    协程 + asyncio
    docker
    vue+uwsgi+nginx部署前后端分离项目
    html
    关于html的基础标签
    关于python中的GIL
    hashlib模块
  • 原文地址:https://www.cnblogs.com/panxuejun/p/8610952.html
Copyright © 2011-2022 走看看