源博客地址:http://blog.csdn.net/pipinet123


MQTT交流群:221405150


实现功能

将全部放在plugins文件夹下的全部符合plugin编写规范的plugin jar包载入到整个guice context中

实现步骤

1、找到全部plugin文件夹下的全部jar包

2、分别找到jar包中META-INF/services/com.hivemq.spi.HiveMQPluginModule文件读取第三方plugin配置的HiveMQPluginModule子类全路径

3、然后依次实例化它。

类图

这次的类图比上次的相比简单多了,载入机制也跟其它的有plugin机制的载入比較相似。所以大概说一下载入步骤就可以。

1、PluginBootstrap通过PluginLoader去载入Plugin,获得到HiveMQPluginModule的列表,并将其注冊到guice中。

2、PluginLoader使用PluginFinder获得到全部Plugin类型,并使用IsolatedPluginLoader对多余的依赖进行排除,并实例化出来相应的HiveMQPluginModule实现的实例。

3、这样全部插件就能够载入出来了。

详细的插件开发以及体会本文中的载入处理方式。须要大家开发一个HiveMQ插件,就能够对本文中的处理逻辑。

http://www.hivemq.com/docs/plugins/latest/

演示样例

在HiveMQ官网有各种插件演示样例源代码。通过他们的Plugin Developer Guide相信大家能够开发出符合自己业务的插件,实现自己的业务逻辑处理。

http://www.hivemq.com/plugins/

MQTT---HiveMQ源代码具体解释(四)插件载入的更多相关文章

  1. Spring IOC源代码具体解释之容器初始化

    Spring IOC源代码具体解释之容器初始化 上篇介绍了Spring IOC的大致体系类图,先来看一段简短的代码,使用IOC比較典型的代码 ClassPathResource res = new C ...

  2. 从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装

    标题:从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11260750. ...

  3. Spring IOC源代码具体解释之容器依赖注入

    Spring IOC源代码具体解释之容器依赖注入 上一篇博客中介绍了IOC容器的初始化.通过源代码分析大致了解了IOC容器初始化的一些知识.先简单回想下上篇的内容 加载bean定义文件的过程.这个过程 ...

  4. Qt5的插件机制(1)--Qt 框架中的插件载入机制概述

    概述 Qt的源代码中通过 Q<pluginType>Factory.Q<pluginType>Plugin 和 Q<pluginType> 这三个类实现了Qt的插件 ...

  5. Flume 1.7 源代码分析(四)从Source写数据到Channel

    Flume 1.7 源代码分析(一)源代码编译 Flume 1.7 源代码分析(二)总体架构 Flume 1.7 源代码分析(三)程序入口 Flume 1.7 源代码分析(四)从Source写数据到C ...

  6. MQTT---HiveMQ源代码具体解释(十四)Persistence-LocalPersistence

    源博客地址:http://blog.csdn.net/pipinet123 MQTT交流群:221405150 简单介绍 HiveMQ的Persistence提供配置包含File和Memory,以解决 ...

  7. MQTT---HiveMQ源代码具体解释(一)概览

    源博客地址:http://blog.csdn.net/pipinet123 MQTT交流群:221405150 面向群体 想自己实现MQTT Broker的朋友 对现有开源的MQTT Broker或多 ...

  8. Spring IOC源代码具体解释之整体结构

    Spring ICO具体解释之整体结构 IOC介绍 IOC, spring的核心.贯穿Spring始终.直观的来说.就是由spring来负责控制对象的生命周期和对象间的关系,将对象之间的关系抽象出来. ...

  9. kafka具体解释四:Kafka的设计思想、理念

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/suifeng3051/article/details/37606001      本节主要从总体角度 ...

随机推荐

  1. 欧拉路小结 JZYZOJ1210 骑马修栅栏

    现在写到欧拉路,理解起来并不算特别困难...吧... 但是非常恶心的是每次都要调试半天,做不到一遍两遍就能ac 每次写程序都对于程序的整体构架没有清晰的思路,想到哪里写到哪里真的是个非常差的习惯[尽管 ...

  2. 【20181024T2】小C的序列【GCD性质+链表】

    题面 [错解] 一眼不可做啊 哎分治? 算不了啊 真的是,打暴力走人 20pts (事实上,还有20pts是随机数据,加个小小的特判就可以) [正解] 首先,从l开始往后gcd最多只有O(log)种取 ...

  3. 注解@Aspect实现AOP功能

    springboot中pom引入jar <!-- aop 切面 --> <dependency> <groupId>org.springframework.boot ...

  4. Android 基于蓝牙的方向控制器

    最近开发了一个蓝牙控制器App,用手机远程控制小球的运动. 包含了一些基础知识:多线程使用,页面UI数据更新,按钮事件,选择项功能,蓝牙功能(蓝牙打开,蓝牙搜索,蓝牙连接,蓝牙命令发送,蓝牙命令接收) ...

  5. centos安装jdk文件

    1.到oracle官网选择要安装的jdk版本 http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html ...

  6. hibernate 开发步骤

    1 创建Customer表 CREATE TABLE CUSTOMER ( CID int NOT NULL PRIMARY KEY , USERNAME varchar(20) , PASSWORD ...

  7. Windows 配置 Apache Python CGI

    提示:安装Apache可参考 https://jingyan.baidu.com/article/0eb457e53c019f03f1a905c7.html 1.  打开URL: https://ww ...

  8. Windows上安装Git替代cmd命令行程序

    git是一个版本管理系统,利用好它,可以管理你项目文件,每个文件的更新删除修改,它都知道,还可以还原回历史的某个版本. msysgit是Windows版的Git. 1.下载地址:https://git ...

  9. ORACLE的VARCHAR2是字节还是字符

    往Oracle一个表的VACHAR2(20)字段中插入七个汉字,提示错误:插入的值太大. 改成插入六个汉字,又可以. 于是百度,原来这与ORACLE的字符集设置有关.(以前的项目都是设置成的ZHS16 ...

  10. LogBack通过MDC实现日志记录区分用户Session

    1.首先实现一个interceptor,在请求开始的时候MDC put一个Session标志,interceptor结束的时候remove掉 public class SessionIntercept ...