MQTT框架和使用-1

简介: MQTT框架和使用

MQTT框架

1. MQTT概述

1.1 形象地理解三个角色

MQTT通信模型示意图如下:

使用电视台、记者、观众三个角色来类比更容易理解:


  • 电视台:在MQTT里被称为服务器(broker),有如下作用
  • 接受来自客户的网络连接; // 记者/观众连接进电视台
  • 接受客户发布的应用信息; // 接受记者发布的消息
  • 处理来自客户端的订阅和退订请求; // 处理观众的订阅、退订请求
  • 向订阅的客户转发应用程序消息 // 给观众转发记者报道的消息
  • 记者和观众都是客户端,记者也可以当观众,观众也可以当记者,有如下作用:
  • 发布信息; // publish,记者
  • 订阅消息;// Subscribe ,观众
  • 退订或删除消息;
  • 断开与服务器连接

65301b296ea5dadf6fe0e1e5bcc5aedb_4035d172bbf74a328edbffc388734e0d.png

1.2 消息的传递

还是以日常生活为例,提几个问题:


  • 观众:我只关心财经新闻,那么只订阅"财经新闻",不订阅"体育新闻"
  • 记者:我是财经记者,我可以发布"财经新闻",不发布"体育新闻"


这个过程中,引入两个概念:


  • 主题(Topic):是财经类的?还是体育类的?
  • 消息(Message)或负载(Playload):具体的新闻信息


具体的流程是这样的:


  • 观众打电话到电视台:connect
  • 观众向电视台订阅"财经新闻": Subscribe 某个 Topic
  • 记者打电话到电视台:connect
  • 记者向电视台发布"财经新闻":Public某个Topic的某个Playload
  • 电视台向"订阅了财经新闻的观众"发布"某条消息":Public某个Playload给Subscriber


整个过程中,电视台和记者、电视台和观众直接的电话要保存连接状态,还要时不时确认一下:


  • 记者要时不时给电视台喊一声"喂":确保电视台还正常
  • 观众要时不时给电视台喊一声"喂":确保电视台还正常


2. 在Windows上体验MQTT

2.1 安装APP

安装这2个APP:

2.2 启动服务器

使用DOS命令行,进入mosquitto-2.0.14-install-windows-x64的安装目录,执行命令:

1. cd  "c:\Program Files\mosquitto"
2. .\mosquitto.exe -v

在下面的实验中,无论是使用MQTTX还是使用mosquitto_pub/mosquitto_sub,都要保持mosquitto.exe在运行。


2.3 使用MQTTX

2.3.1 建立连接

运行MQTTX后,如下图操作:



2.3.2 订阅主题

建立连接后,如下图操作:

2.3.3 发布主题

如下操作:

2.4 使用mosquitto

2.4.1 发布消息

参数说明:

mosquitto_pub 命令参数说明
1. -d  打印debug信息
2. -f  将指定文件的内容作为发送消息的内容
3. -h  指定要连接的域名  默认为localhost
4. -i  指定要给哪个clientId的用户发送消息
5. -I  指定给哪个clientId前缀的用户发送消息
6. -m  消息内容
7. -n  发送一个空(null)消息
8. -p  连接端口号
9. -q  指定QoS的值(0,1,2)
10. -t  指定topic
11. -u  指定broker访问用户
12. -P  指定broker访问密码
13. -V  指定MQTT协议版本
14. --will-payload  指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
15. --will-qos  Will的QoS值。该参数需要与--will-topic一起使用
16. --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使用
17. --will-topic  用户发送Will消息的topic

使用DOS命令行,进入mosquitto-2.0.14-install-windows-x64的安装目录,执行命令:


cd  "c:\Program Files\mosquitto"

.\mosquitto_pub.exe -h 127.0.0.1 -p 1883  -t "100ask"

如图:



2.4.2 订阅消息

参数说明:


mosquitto_sub 命令参数说明

1. -c  设定‘clean session’为无效状态,这样一直保持订阅状态,即便是已经失去连接,如果再次连接仍旧能够接收的断开期间发送的消息。

2. -d  打印debug信息

3. -h  指定要连接的域名  默认为localhost

4. -i 指定clientId

5. -I 指定clientId前缀

6. -k keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒。

7. -q 指定希望接收到QoS为什么的消息  默认QoS为0

8. -R 不显示陈旧的消息

9. -t 订阅topic

10. -v 打印消息

11. --will-payload  指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用

12. --will-qos  Will的QoS值。该参数需要与--will-topic一起使用

13. --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使用

14. --will-topic  用户发送Will消息的topic

使用DOS命令行,进入mosquitto-2.0.14-install-windows-x64的安装目录,执行命令:

1. cd  "c:\Program Files\mosquitto"
2. .\mosquitto_pub.exe -h 127.0.0.1 -p 1883  -t "100ask"

如图:

2.4.2 订阅消息

参数说明:

mosquitto_sub 命令参数说明
1. -c  设定‘clean session’为无效状态,这样一直保持订阅状态,即便是已经失去连接,如果再次连接仍旧能够接收的断开期间发送的消息。
2. -d  打印debug信息
3. -h  指定要连接的域名  默认为localhost
4. -i 指定clientId
5. -I 指定clientId前缀
6. -k keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒。
7. -q 指定希望接收到QoS为什么的消息  默认QoS为0
8. -R 不显示陈旧的消息
9. -t 订阅topic
10. -v 打印消息
11. --will-payload  指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
12. --will-qos  Will的QoS值。该参数需要与--will-topic一起使用
13. --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使用
14. --will-topic  用户发送Will消息的topic

使用DOS命令行,进入mosquitto-2.0.14-install-windows-x64的安装目录,执行命令:


f47fe5c9ddd58a81130f577b74dc165c_c2ecd926132a43d7bb7a0e9cb7839845.png


MQTT框架和使用-2

https://developer.aliyun.com/article/1507968

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
消息中间件 Java Kafka
一款消息队列的客户端框架——启明信息车联网MQ演进实践分享
一款消息队列的客户端框架——启明信息车联网MQ演进实践分享 分享人:阿里云MVP曾宪宇,2014开始 就职于启明信息,负责车联网平台的架构和建设,坐标吉林长春。 分享内容:结合主流MQ,介绍一款基于Java的开源消息队列客户端框架。
3194 0
一款消息队列的客户端框架——启明信息车联网MQ演进实践分享
|
消息中间件 存储 Java
后端开发Spring框架之消息介绍 同步异步 JMS AMQP MQTT Kafka介绍
后端开发Spring框架之消息介绍 同步异步 JMS AMQP MQTT Kafka介绍
164 0
|
消息中间件 缓存 PHP
PHP+Laravel框架RabbitMQ简单使用(Pub/Sub模式)
一、简介 publish-and- subscribe, 即发布订阅模型。在Pub/Sub模型中,生产者将消息发布到一个主题(Topic)中,订阅了该Topic的所有下游消费者,都可以接收到这条消息。 特点: 每个消息可以有多个订阅者; 客户端只有订阅后才能接收到消息; 持久订阅和非持久订阅。 注意: 发布者和订阅者有时间依赖:接受者和发布者只有建立订阅关系才能收到消息; 持久订阅:订阅关系建立后,消息就不会消失,不管订阅者是否都在线; 非持久订阅:订阅者为了接受消息,必须一直在线。 当只有一个订阅者时约等于点对点模式
|
消息中间件 存储 中间件
Golang微服务框架Kratos应用RabbitMQ消息队列
RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
360 1
|
传感器 物联网 Linux
Linux MQTT智能家居(MQTT框架)
Linux MQTT智能家居(MQTT框架)
469 0
|
消息中间件 网络协议 物联网
Golang微服务框架Kratos应用MQTT消息队列
MQTT 协议 是由`IBM`的`Andy Stanford-Clark博士`和`Arcom`(已更名为Eurotech)的`Arlen Nipper博士`于 1999 年发明,用于石油和天然气行业。工程师需要一种协议来实现最小带宽和最小电池损耗,以通过卫星监控石油管道。最初,该协议被称为消息队列遥测传输,得名于首先支持其初始阶段的 IBM 产品 MQ 系列。2010 年,IBM 发布了 MQTT 3.1 作为任何人都可以实施的免费开放协议,然后于 2013 年将其提交给结构化信息标准促进组织 (OASIS) 规范机构进行维护。2019 年,OASIS 发布了升级的 MQTT 版本 5。
452 0
|
消息中间件 程序员 PHP
PHP+Laravel框架RabbitMQ简单使用(工作队列模式(竞争消费者模式))
工作模式:一个消息生产者,一个交换器,一个消息队列,多个消费者。同样也称为点对点模式 假如我们拥有两个消费者,默认情况下,RabbitMQ 将按顺序将每条消息发送给下一个消费者,平均而言,每个消费者将获得相同数量的消息,这种分发消息的方式称为轮询。 假如有一些非常耗时的任务,某个消费者在缓慢地进行处理,而另一个消费者则空闲,显然是非常消耗资源的。
1418 0
|
消息中间件 开发框架 Go
Go语言框架中如何快速集成RabbitMq
Go语言框架中如何快速集成RabbitMq
563 0
|
消息中间件 PHP
PHP+Laravel框架RabbitMQ简单使用(路由模式)
一、简介 路由模式跟发布订阅模式类似,然后在订阅模式的基础上加上了类型,订阅模式是分发到所有绑定到交换机的队列,路由模式只分发到绑定在交换机上面指定路由键的队列