mqtt协议的broker有很多,但是java的支持集群的并不多,之前调研过一番,发现moqutte基本满足需求,就想着基于这个在自己做二次开发。后面会逐渐把自己对moqutte的研究发布出来,希望能给有相同需求的同学一定的参考意义。
github地址:https://github.com/andsel/moquette
一。将代码倒入idea
找到启动类
mqtt协议-broker之moqutte源码研究一_第1张图片
启动报错,是因为找不到moquette的配置文件
mqtt协议-broker之moqutte源码研究一
跟踪源码moquette的配置文件地址是config/moquette.conf
因为咱们是直接启动的Server类里面的main方法,而不是通过assebely打包的jar包,所有这个位置是没有配置文件的,但是moquette支持通过启动参数指定配置文件的位置
mqtt协议-broker之moqutte源码研究一
那就简单了,把启动需要的配置文件放到本地的某个地方,再通过启动参数指定就行了,在idea里面指定
mqtt协议-broker之moqutte源码研究一_第2张图片
我是放在/data/moquette目录下
另外idea启动需要的配置文件再,broker模块下的config包里面,或者distribution/src/main/resources
加入之后启动成功
mqtt协议-broker之moqutte源码研究一_第3张图片

二。配置文件讲解
moqutte的配置文件有五个,下面分别讲解一个有什么作用
1.moquette.conf 主配置文件,moquette启动需要的主要配置都在这里,包括端口号,认证鉴权,存储等,后面讲解源码的时候会详细讲解各个参数的意义
2.hazelcast.xml moquette的集群是通过.hazelcast来实现的,不了解的同学可以自行google一下,这里就不详细讲了
3.password_file.conf 这里配置的是连接是需要的密码
4.acl.conf 这里是各个client对topic的读写权限
5.log4j.properties 日志文件,不多说了

三。客户端选择,本人选择的是eclipse的paha,github地址https://github.com/eclipse/paho.mqtt.java
倒入idea之后找到如下的测试类
mqtt协议-broker之moqutte源码研究一_第4张图片

在moquette的io.moquette.server.netty.NettyMQTTHandler类上的打断点,重新启动

启动paha的测试类,开始测试
mqtt协议-broker之moqutte源码研究一_第5张图片

发现moquette的断点进来了,说明client到broker的链路走通了,后面就可以跟踪源码了
mqtt协议-broker之moqutte源码研究一_第6张图片
之所以在这打断点是因为这是netty与其他应用的接入点,对netty了解的同学应该知道,应用其实只需要实现一个handler,当有数据流的时候,由netty负责回调你的handler。netty是一个非常优秀的nio框架,非常值得我们去仔细的研究,我后面会再出一个netty的源码研究系列。