其实第14篇已经说了channel源码情况,准备看一下AMQChannel源码,发现有很多依赖其他类,先熟悉一下其他关键类的源码, 我们来熟悉一下Method方法
- AMQP方法对象的基类,具体实现在AMQP.java 类中

1、 Method接口
1.1、方法
| 方法名 | 描述 | |
|---|---|---|
| int protocolClassId | 协议的classid | |
| int protocolMethodId | 协议方法id | |
| String protocolMethodName | 协议方法名称 |
2、Method 抽象类
2.1、方法
| 方法名 | 描述 | 图示 |
|---|---|---|
| boolean hasContent | 判断内容是否存在,如果存在的话就需要调用header和body,否则只需要调用单个方法帧 | |
| Object visit(MethodVisitor visitor) | 访客支持(双调度机制) | |
| void write ArgumentsTo(MethodArgumentWriter writer) | 写参数方法 | |
| void appendArgumentDebugStringTo(buffer) | 调试使用的 | |
| Frame toFrame(int channelNumber) | 组装一个方法的数据帧,(这是一个模板方法) | 1 |
2.2、图示
- toFrame 方法

-
总结
- 方法帧先是写classId --> methodId --> 方法参数
- toFrame 终极目的就是将classId 和methodId以及方法参数写入到accumlator字节数组中
- 具体实现都是在AMQP.java 中
-
对于Frame操作可以参考Frame 源码分析
2、总结
- Method接口和Method抽象类都是模板方法,定义写出的Frame的格式,具体实现需要查看AMQP接口 和 AMQPImpl类,(这个两个类确定具体帧classId,methodId和具体方法参数)
- Method的抽象方法主要目的是将方法转换成Frame帧 存在到accumulator的字节数组
本文深入探讨了AMQP协议中的Method接口和抽象类,详细介绍了Method的接口方法和抽象方法,如protocolClassId、protocolMethodId和visit。Method抽象类包含关键方法如hasContent和writeArgumentsTo,用于构建方法帧。文章通过图示解析了toFrame方法的过程,展示了如何将classId、methodId及参数写入帧数据。了解这些内容对于理解AMQP协议的实现至关重要。
1万+

被折叠的 条评论
为什么被折叠?



