MQTT中的mosquitto简单使用以及订阅离线消息

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

值得一提的是MQTT是一种通讯协议。而mosquitto是基于MQTT协议衍生的一个开源的broker。

mosquitto 下载地址https://mosquitto.org/download/

mosquitto分为三个部分。pub(发布者),broker(代理、服务器),sub(订阅者),他们之间的逻辑关系为pub->broker->sub;pub将发送主题和信息发送给broker,sub从broker订阅主题得到信息;

简单命令如下:

    开启mosquitto服务。cmd打开安装完的mosquitto的路径。输入 mosquitto -c mosquitto.conf启动mosquitto服务器。

mosquitto的命令使用帮助

打开新的cmd到mosquitto路径下输入 mosquitto_pub -t topic -m message,这样发布者就发布信息成功了。需要指定主题topic 和信息message。

mosquitto_pub命令帮助
mosquitto_pub命令帮助

再打开一个新的cmd进入到mosquitto的路径下。输入mosquitto_sub -t topic。就可以订阅到刚刚发布者发布的信息message了。

mosquitto_sub命令帮助
mosquitto_sub命令帮助

以上就是简单的使用mosquitto。

以下是做到sub离线接收到pub发布的信息。

①开启mosquitto服务器时可以添加一个-v命令。可以在broker中打印出监控日志。mosquitto -c mosquitto.conf -v

②在pub发布消息时需要绑定主题和发布的信息之外还需要指定Qos(服务质量),具体命令mosquitto_pub -t topic -m message -q 1

服务质量:MQTT 的设计初衷是为了在不可靠的网络中运作良好,为不同的场景提供了三个级别的服务质量,允许客户端指定自己想要的可靠性级别。QoS =0:至多一次这是最简单的级别,无需客户端确认,其可靠性与基础网络层 TCP/IP 一致。QoS =1:至少一次,有可能重复确保至少向客户端发送一次信息,不过也可发送多次;在接收数据包时,需要客户端返回确认消息(ACK 包)。这种方式常用于传递确保交付的信息,但开发人员必须确保其系统可以处理重复的数据包。QoS =2:只有一次,确保消息只到达一次这是最不常见的服务质量级别,确保消息发送且仅发送一次。这种方法需要交换4个数据包,同时也会降低消息代理的性能。由于相对比较复杂,在 MQTT 实现中通常会忽略这个级别,请确保在选择数据库或消息代理前检查这个问题。

③此时sub在线状态的话会直接接收到来自pub的信息。如果此时sub处于离线状态。想要在接受到pub发布的信息。需要让clean_session置为false;在sub命令帮助中-c就是关闭clean_session的功能。同时需要-i(指定一个id),同样Qos也指定为1。具体命令mosquitto_sub -t topic -c -i id -q 1。此时sub能够接收到pub发布的离线信息。

在mosquitto.conf文件中找到persistence选项,将persistence设置为true,在broker离线时能够保存此时pub和sub的信息到.db文件中。在broker重启之后将数据导入回broker。此时sub还能接收到离线的pub发布的信息。

你可能感兴趣的:(MQTT中的mosquitto简单使用以及订阅离线消息)