这篇文章主要熟悉一下rabbitmq客户端的核心类ConnectionFactory,主要会从几个方面入手,成员变量整理和核心方法整理,得出它们核心能力,做一些实践验证
1、成员变量整理
-
field default(默认) 含义 virtualHost / 虚拟主机概念(隔离消息能力) port -1 端口号(默认端口号非ssl为5672,ssl为5671) host localhost 主机地址 requestedChannelMax 2047 最大通道数,2047 因为它是服务器端的 2048 减去通道 0,每个连接用于协商和错误通信 requestedFrameMax 0 默认是0,表示请求帧大小没有任何限制 requestedHeartbeat 60 默认心跳检测间隔是60s connectionTimeout 60000 默认连接超时是60s handshakeTimeout 10000 默认握手超时是10s shutdownTimeout 10000 默认关闭超时是10s,如果是0则无限等待 _clientProperties 默认 rabbitmq客户端自带属性,客户端能力 socketFactory null socket工厂类(jdk自带的) saslConfig 简单验证和安全层配置 默认机制为PLAIN sharedExecutor 共享执行器 ExecutorService (jdk自带) threadFactory 线程工厂类 new DefaultThreadFactory()(jdk自带) shutdownExecutor 关闭执行器 ExecutorService (jdk自带) heartbeatExecutor 心跳执行器 ScheduledExecutorService socketConf socket配置 默认是非Nagle算法,也就是无延迟,数据包立即发送(有人就发车,不需要坐满),这里使用jdk1.8 函数特性 exceptionHandler 异常处理器 默认异常处理 credentialsProvider 默认username=guest, password=guest 验证用户名和密码 automaticRecovery true 是否自动恢复(由于各种原因断开了) topologyRecovery true 拓扑恢复 topologyRecoveryExecutor null 拓扑恢复执行器 networkRecoveryInterval 5000 单位是毫秒,就是5s recoveryDelayHandler null 恢复延迟处理器 metricsCollector NoOpMetricsCollector rabbitmq消息监控收集器 nio false 是否为nio frameHandlerFactory null 帧处理器工厂类(socket处理) nioParams new NioParams nio一些默认参数 sslContextFactory null ssl上下文工厂类 channelRpcTimeout 10min 默认通道超时时间为10分钟 channelShouldCheckRpcResponseType false 是否需要检查返回rpc调用结果类型 errorOnWriteListener null 监听发生io写异常,并传播异常 workPoolTimeout -1 工作线程池排队超时时间,默认没有超时时间 topologyRecoveryFilter null topology恢复过滤 connectionRecoveryTriggeringCondition null 条件自动恢复连接(Predicate) topologyRecoveryRetryHandler null 重试处理拓扑恢复处理器 trafficListener TrafficListener.NO_OP 命令流量监控,一般用于debug -
以上是所有成员变量,我们以时间轴进行整理,主要分一下几块(如图所示)
-
连接和握手相关成员变量
-
发送数据和处理数据成员变量
-
异常逻辑处理和监听成员变量
-
发生异常之后进行恢复和恢复策略成员变量
-
关闭连接成员变量
-
心跳检测成员变量
-
指标收集器(收集客户与服务端交互整个过程)
-
-
2、核心方法
-
com.rabbitmq.client.ConnectionFactory#portOrDefault (获取端口号)
- 自定义优先级最高
- 非ssl默认端口是5672
- ssl默认端口是5671