MQTT学习笔记
发布于 4 年前 作者 vjin 3500 次浏览 来自 分享

MQTT学习笔记

解决问题:

  1. 服务器必须要实现成千上万客户端的接入
  2. 单词数据量小,但不能出错
  3. 必须能够适应高延迟、偶尔断网等通信不可靠的风险
  4. 根据数据的重要程度和特性,设置不同等级的服务质量

MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,因此易于实现。这些特点使得它对很多场景来说都是很好的选择,包括受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT),这些场景要求很小的代码封装或者网络带宽非常昂贵。

本协议运行在TCP/IP,或其它提供了有序、可靠、双向连接的网络连接上。它有以下特点:

  • 使用发布/订阅消息模式,提供了一对多的消息分发和应用之间的解耦。
  • 消息传输不需要知道负载内容。
  • 提供三种等级的服务质量:
  • “最多一次”,尽操作环境所能提供的最大努力分发消息。消息可能会丢失。例如,这个等级可用于环境传感器数据,单次的数据丢失没关系,因为不久之后会再次发送。
  • “至少一次”,保证消息可以到达,但是可能会重复。
  • “仅一次”,保证消息只到达一次。例如,这个等级可用在一个计费系统中,这里如果消息重复或丢失会导致不正确的收费。
  • 很小的传输消耗和协议数据交换,最大限度减少网络流量。
  • 异常连接断开发生时,能通知到相关各方。

mosquitto

mosquitto在Ubuntu16.04环境安装:

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients

mosquitto基本操作:

mosquitto -c /etc/mosquitto/mosquitto.conf -p 1883
mosquitto_sub -t "temp"
mosquitto_pub -t "temp" -m "hello"

更多参数选择操作:

mosquitto_sub -d -v -t temp -h 127.0.0.1 -p 1883 -q 2
mosquitto_pub -d -t temp -h 127.0.0.1 -p 1883 -m hello -q 2

mosquitto非匿名登录配置:

服务端创建用户:

sudo mosquitto_passwd -c /etc/mosquitto/passwd.conf hg #隐藏密码创建
sudo mosquitto_passwd -b /etc/mosquitto/passwd.conf zs 11111 #明文密码创建

修改配置/etc/mosquitto/mosquitto.conf

allow_anonymous false #true表示允许匿名登录,false启动用户验证
password_file /etc/mosquitto/passwd.conf #用户账号信息文件存放位置
回到顶部