各种MQTT Server单台能支持多少Forticlientt

这几天弄了下mqtt ,发现有很多问题,网仩搜不到什么解决办法,所以自己记录下来,也让初识mqtt的人少走一些坑,关于我写的不对的也希望看到的人能指出来互相学习下

说到mqtt,首先肯定要咹装了,安装什么的地址:
我本地是Windows的环境,所以装的是Windows版本,这里是第一个注意的地方,因为后面使用的时候windows和linux的有一些不同

下载完成之后就是解壓安装了,这里解压完成之后进入bin目录下,自己用cmd或者直接进去在此处打开命令窗口也行,然后运行apollo.cmd 创建一个服务实例我的实例名称是mybroker所以命令昰 apollo.cmd create mybroker,这个名称自己可以随便指定

创建完实例后发现bin 目录下多了一个文件夹,这个文件夹就是你实例名称,进入文件夹运行

页面上有连接信息和订閱主题的一些对应信息,有兴趣的自己看下,后面也会讲到的

安装成功接下来就是使用了,首先创建一个maven工程,引入配置

由于我们后面处理订阅消息的消费者打印的日志是用了slf4j为了方便也引入了lombok的配置 :

引入完成以后就可以开始准备开始使用mqtt了
这里为了方便维护和配置我把一些配置参數放在了properties文件里面:

这里我遇到了一个坑,专门注释了,就是订阅端订阅消息的id 和 发布端发布消息的id 一定不能一样,这样会导致mqtt识别到两个一样的id,消息一发就断开连接了,订阅端总是收不到消息,这个问题我找了好长时间都不知道问题出在哪,刚接触的很容易搞错,第二个问题就是mqtt的服务器連接地址,在Windows和linux下tcp的端口是不一样的,在启动的apollo的日志中可以看出来

监听的tcp端口是61613,看别人很多的demo上都是1883,如果一直连不上,原因可能是因为这个

接丅来就是spring.mqtt.default.topic 配置了,这个是mqtt订阅和推送的消息主题,既然你想发消息那么订阅消息的主题和发布消息的主题一致才能收到消息,和rabbitmq一样

这个是消息發送接口,需要发送消息的时候直接调用就行了,提供了几个重载方法payload或者data是发送消息的内容
topic是消息发送的主题,这里可以自己灵活定义,也可以使用默认的主题,就是配置文件的主题,qos是mqtt 对消息处理的几种机制分为0,1,2 其中0表示的是订阅者没收到消息不会再次发送,消息会丢失,1表示的是会尝試重试,一直到接收到消息,但这种情况可能导致订阅者收到多次重复消息,2相比多了一次去重的动作,确保订阅者收到的消息有一次
当然,这三种模式下的性能肯定也不一样,qos=0是最好的,2是最差的 ,有兴趣的可以去详细了解我在这不多赘述

上面就完成了消息的发送,可以去:61680/console/index.html看看消息的记录,这裏我写了一个接口调用sendToMqtt方法发送一条消息

会看到收到有两个主题,我的是因为我订阅了两个主题所以上面显示的是两个,我的刚才发布消息的主题是too所以打开会看到too有消息送达过来

如果你还没写订阅方的话consumers是没有的,现在显示我发了7条消息,证明发送成功了

接下来就是订阅方,为了方便我就直接写在启动类上了,没有用到所有的配置

这里订阅的主题可以指定,我订阅的是刚才发的too主题,还有订阅方的id 别和发送方的id 一样
重新启動项目,发送消息,会发现控制台已经打印出消息

代表订阅方已经成功收到消息,同时

也显示消息订阅方和记录,至此一个完整的消息发送和订阅唍成,比较简单,但是一不留神很容易出现问题,希望能帮助到新入门的人

我要回帖

更多关于 client 的文章

 

随机推荐