日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[四]RabbitMQ-客户端源码之Frame

發(fā)布時(shí)間:2024/4/11 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [四]RabbitMQ-客户端源码之Frame 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。

歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/mq/rabbitmq-client-source-code-of-frame/


Frame是指AMQP協(xié)議層面的通信幀(一個(gè)正式定義的連接數(shù)據(jù)包)。
我們來(lái)看下Frame類中的成員變量有哪些:

/** Frame type code */ public final int type;/** Frame channel number, 0-65535 */ public final int channel;/** Frame payload bytes (for inbound frames) */ private final byte[] payload;/** Frame payload (for outbound frames) */ private final ByteArrayOutputStream accumulator;

Frame里的三個(gè)成員變量:type, channel, payload是真正和報(bào)文有關(guān)的。accumulator是為了方便內(nèi)部編程的一個(gè)變量。Frame類就是對(duì)這個(gè)玩意兒捯飭捯飭,沒(méi)有什么難度,好奇的同學(xué)可以自己翻看下,本文主要來(lái)闡述下AMQP中的Frame的一些信息。

一個(gè)通信幀的協(xié)議層面的結(jié)構(gòu)如下:

序號(hào)名稱占用字節(jié)
1frame type1B
2channel number2B
3payload length4B
4payload[0-N]B
5FRAME_END(結(jié)束幀)1B(0xCE)

這樣可以知道:一個(gè)通信幀的最小大小為:1B+2B+4B+0B+1B=8B.

AMQP 定義了如下的幀類型:

  • Type = 1, “METHOD”: 方法幀
  • Type = 2, “HEADER”: 內(nèi)容頭幀
  • Type = 3, “BODY”: 內(nèi)容體幀.
  • Type = 8, “HEARTBEAT”: 心跳幀.
  • 通道編號(hào)為0的代表全局連接中的所有幀,1-65535代表特定通道的幀.

    方法幀
    type=1, payload包含以下內(nèi)容:
    classId:2B
    methodId:2B
    argument:NB

    內(nèi)容頭幀
    type=2,payload包含以下內(nèi)容
    classId:2B
    weight:2B
    BodySize:8B
    property flags:2B
    properties: NB

    內(nèi)容幀
    type=3, payload不進(jìn)行具體解析,

    心跳幀
    tpye=8,沒(méi)有payload。心跳幀的channel number必須為0。


    附:本系列全集

  • [Conclusion]RabbitMQ-客戶端源碼之總結(jié)
  • [一]RabbitMQ-客戶端源碼之ConnectionFactory
  • [二]RabbitMQ-客戶端源碼之AMQConnection
  • [三]RabbitMQ-客戶端源碼之ChannelManager
  • [四]RabbitMQ-客戶端源碼之Frame
  • [五]RabbitMQ-客戶端源碼之AMQChannel
  • [六]RabbitMQ-客戶端源碼之AMQCommand
  • [七]RabbitMQ-客戶端源碼之AMQPImpl+Method
  • [八]RabbitMQ-客戶端源碼之ChannelN
  • [九]RabbitMQ-客戶端源碼之Consumer
  • 歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/mq/rabbitmq-client-source-code-of-frame/


    歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。


    總結(jié)

    以上是生活随笔為你收集整理的[四]RabbitMQ-客户端源码之Frame的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。