MQTT---HiveMQ源码详解(三)配置加载
来源:互联网 发布:怎么让淘宝客户加微信 编辑:程序博客网 时间:2024/04/25 18:27
源博客地址:http://blog.csdn.net/pipinet123
MQTT交流群:221405150
功能
读取config.xml,转成对应的javabean
实现
1、找到文件
2、读取文件
3、替换变量
4、使用JAXB读取xml内容
类图
由于此处设计代码较多,而且处理方式非常通用、也较简单,所以不列举大篇代码,画出uml图讲清关系即可,由于HiveMQ都是采用interface impl的形式太多uml就看不清楚了,为了简单起见,部分接口实现就暂时不出现在类图赏。
初看这样的uml图保证所有人都是一脸懵逼,没关系,且听我一一道来。
1、由上一篇我们可以知道config读取是在main方法中就通过HiveMQConfigurationServiceFactory的静态方法create创建。
2、请记住config.xml里面的配置,其实config.xml的根就是HiveMQConfigurationService,他持有了
GeneralConfigurationService
ListenerConfigurationService
MqttConfigurationService
InternalConfigurationService
ThrottlingConfigurationService
PersistenceConfigurationService
SharedSubscriptionsConfigurationService
RestConfigurationService
ClusterConfigurationService
这些接口定义在hivemq spi上都可以看到其源码,有兴趣的朋友可以自行查看。
3、ConfigFile说白了就是config.xml的File的一个holder。
4、HiveMQConfigurationServiceFactory通过,ConfigurationReader来进行对config.xml进行读取,并给上述的那么多service进行初始化赋值。
5、ConfigurationReader通过EnvironmentVariableReplacer把环境变量替换到config.xml中的占位符中,具体的占位符语法情参照hivemq官网的文档。
6、那么通过上述流程就读取出了对应的配置,同时通过spi的形式将上述一堆service提供给Plugin使用。
- MQTT---HiveMQ源码详解(三)配置加载
- MQTT---HiveMQ源码详解(四)插件加载
- MQTT---HiveMQ源码详解(五)Netty-启动与Listeners加载
- MQTT---HiveMQ源码详解(一)概览
- MQTT---HiveMQ源码详解(八)Netty-WebSocket
- MQTT---HiveMQ源码详解(九)Netty-Codec
- MQTT---HiveMQ源码详解(十)Netty-Statistics
- MQTT---HiveMQ源码详解(十一)Netty-Throttling
- MQTT---HiveMQ源码详解(十四)Persistence-LocalPersistence
- MQTT---HiveMQ源码详解(十六)TopicTree
- MQTT---HiveMQ源码详解(二)结构与启动
- MQTT---HiveMQ源码详解(外传)为什么使用Xodus
- MQTT---HiveMQ源码详解(六)Netty-Handlers总览
- MQTT---HiveMQ源码详解(七)Netty-SSL/NoSSL
- MQTT---HiveMQ源码详解(十五)Persistence-Cluster/Single
- MQTT---HiveMQ源码详解(十八)Cluster-kryo与Serializer
- MQTT---HiveMQ源码详解(十九)Cluster-Request/Response
- MQTT---HiveMQ源码详解(二十)Cluster-Replicate/VectorClock
- 递归算法与斐波拉契数列
- HBase Compaction(1)
- MongoDB 最佳实践 – 持续更新版
- Hibernate3 高级查询
- 蓝桥杯-历届试题-大臣的旅费(经典树形DP)
- MQTT---HiveMQ源码详解(三)配置加载
- MES标签客户编码信息不正确处理
- Lucene简单应用--Document的增删改查操作
- 开发中的必备知识
- docker 基本使用
- 红黑树详解
- Python3爬虫【壹】静态网页
- 掌握jQuery获取元素的方法
- 递归大总结-数据分离算法-逆转数字