做了这么多准备工作,终于可以看一下AMQConnection源码了,可以看到整个指令运行和整体准备工作,在通道中真正干活的。没错开干

- 对于Connection可以参考第6篇Connection源码分析
文章目录
1、NetworkConnection
- 网络连接接口
| 方法名 | 描述 | |
|---|---|---|
| InetAddress getLocalAddress() | 获取客户端地址 | |
| int getLocalPort(); | 获取客户端端口 | |
| InetAddress getAddress() | 获取对等地址 | |
| int getPort() | 获取对等端口 |
2、ShutdownNotifierComponent 类
- 这个类是ShutdownListener监听器管理类,且会记录关闭的原因,这个是Channel和Connection都有关闭监听器。
2.1、成员变量或常量
| 类型和名称 | 默认值 | 含义 |
|---|---|---|
| Object monitor | new Object() | 同步锁 |
| List shutdownListeners | new ArrayList() | 所有关闭监听器 |
| volatile ShutdownSignalException shutdownCause | null | 关闭信号异常 |
2.2、方法
| 方法名 | 描述 | |
|---|---|---|
| void addShutdownListener | 添加关闭监听器,如果有异常,直接执行关闭异常 | |
| ShutdownSingalException get CloseReason | 获取关闭异常 | |
| void notifyListeners | 通知关闭的消息 | |
| void removeShutdownListener | 移除关闭监听器 | |
| boolean isOpen | 判断是否打开, true表打开,false表示关闭 | |
| boolean setShutdownCauseIfOpen | 如果关闭设置异常的值(shutdownCause) |

最低0.47元/天 解锁文章
1703

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



