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

二。配置文件讲解 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之后找到如下的测试类

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

启动paha的测试类,开始测试

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