简单认识认识mqtt及mosquitto

小编对Linux这一块的实际开发经验虽然还不是很足,但也知道进程间通信有那么几种方式:管道、消息队列、共享内存、套接字等。

某项目中使用了MQTT作为进程间的通信方式,感觉很新颖,网上好像也比较少有看到使用MQTT来作为进程间通信的方式的。这两篇笔记我们就来一起学习一下这种方式。

MQTT的一些介绍

以下介绍内容来自《[野火]《LwIP应用开发实战指南》

MQTT 协议全称是 Message Queuing Telemetry Transport,翻译过来就是消息队列遥测传输协议,它是物联网常用的应用层协议,运行在 TCP/IP 中的应用层中,依赖 TCP 协议,因此它具有非常高的可靠性,同时它是基于 TCP 协议的<客户端-服务器>模型发布/订阅主题消息的轻量级协议。

1、MQTT通信模型

MQTT协议是基于客户端-服务器模型,在协议中主要有三种身份:发布者(Publisher)服务器(Broker) 以及订阅者(Subscriber)。  并且消息发布者可以同时是订阅者 。

MQTT 消息的发布者和订阅者都是客户端,服务器只是作为一个中转的存在,将发布者发布的消息进行转发给所有订阅该主题的订阅者。

MQTT 客户端的功能:

  • 发布消息给其它相关的客户端。
  • 订阅主题请求接收相关的应用消息。
  • 取消订阅主题请求移除接收应用消息。
  • 从服务端终止连接。

MQTT 服务器常被称为 Broker(消息代理) 。它的功能有:

  • 接受来自客户端的网络连接请求。

  • 接受客户端发布的应用消息。

  • 处理客户端的订阅和取消订阅请求。

  • 转发应用消息给符合条件的已订阅客户端(包括发布者自身)。

2、MQTT消息

MQTT所发的消息包含:主题+内容,客户端可以订阅任意主题,若有其它客户端发布主题时符合所订阅的主题,就会由网关发送到客户端。

「什么是主题?」

MQTT 服务器为每个连接的客户端(订阅者)添加一个标签,该标签与服务器中的所有订阅相匹配, 服务器会将消息转发给与标签相匹配的每个客户端。这样的一个标签就是主题。

「服务质量:」

MQTT提供三种服务质量(Quality of Service,简写QoS),供开发者根据不同的情景选择不同的服务级别:

  • QoS0:最多发送一次消息,在消息发送出去后,接收者不会发送回应,发送者也不会重发消息。

  • QoS1:最少发送一次消息(消息最少需要送达一次,也有可送达多次), QoS 1的 PUBLISH 报文的可变报头中包含一个报文标识符,需要 PUBACK 报文确认。

  • QoS2:这是最高等级的服务质量,消息丢失和重复都是不可接受的。只不过使用这个服务质量等级会有额外的开销,这个等级常用于支付中,因为支付是必须有且仅有一次成功,总不能没给钱或者给了多次钱吧。

mosquitto的使用

1、mosquitto简介

mosquitto是一款开源的MQTT消息代理(服务器)软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。

mosquitto仓库地址:

https://gitee.com/zhengnianli/mosquitto

https://github.com/eclipse/mosquitto

2、mosquitto实践

从以上链接下载mosquitto源码,得到:

在mosquitto路径下,依次输入如下命令编译:

mkdir build
cd build
cmake ../
make

(0)

相关推荐

  • MQTT QOS &amp; Retained Message

    项目终于基本完成了,记录一下,由于客户端误设置了发布保留消息,导致服务器每次上线都会收到客户端最后一条消息,先去解读并改了QOS的设置,并没有用,然后才发现有Retained Message的设置,直 ...

  • 说到做到!

    之前有位读者给我留言说想要了解一下什么是 MQTT 协议,顺便还把我夸了一把,有点不好意思啦. 那么读者的要求必须要满足啊,所以现在 @一下这位小姐姐,来听课啦!什么是 MQTT 协议MQTT 协议的 ...

  • EMQ连接内存消耗

    Erlang进程消耗 EMQ对客户端链接使用链接进程(emqtt_client)和session进程(emqtt_session)分开的策略. 当一个mqtt的客户端连接到EMQ的服务器上的时候,首先 ...

  • 当下流行的物联网协议MQTT简介

    概述 MQTT是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器之间通信的桥梁. MQTT协议是为大量计 ...

  • 用了那么久MQTT,这些知识点你了解吗

    来这里,还可以学习HAL库的使用哦 哈喽,小伙伴们,今天来聊一聊什么是MQTT协议,以及常用的几个术语是什么意思,有图有真相哦,欢迎阅读 1. 什么是MQTT   MQTT(MQ Telemetry ...

  • 消息推送标准协议:MQTT

    随着物联网(Internet of Things,IoT)的兴起,机器之间(Machine-to-Machine,M2M)的大规模信息沟通成为重要的课堂,之前HTTP的请求/回答(Request/Re ...

  • 树莓派上的MQTT环境搭建

    前言最近实验室准备招新生,但现在可以拿出来演示诱拐新生的DEMO一个都没,于是老板要求我做一个房间定位的系统.原理和设备也很简单.一个Beacon收集器,和若干个beacon.通过Beacon收集器收 ...

  • mqtt协议 学习笔记

    文章目录 1. MQTT协议介绍 2. MQTT协议特性 3. MQTT协议的通信模型 3. MQTT的主题 4. MQTT协议的连接与会话 5. MQTT 报文格式 5.1 报文类型汇总 i. 连接 ...

  • 体内湿邪艾灸这样做,方法既简单又安全!你应该知道!

    现在人意识到湿浊才是现代人最大的健康顽敌.这也是我反复强调阳气不足,湿邪不去,吃再多药品补品都如同隔山打牛的意义所在. 老百姓都知道治病要除根,那么怎么才能除病根呢?其实祛除痰湿就是在挖病根,哪怕是认 ...

  • 三个简单的练习改善你的网球击球时机,快慢结合、随球而动

    但其实,我们看到的许多技术动作上的错误是由于不良的击球时机导致的. 今天分享3个针对性练习,偶尔把注意力从技术上移开放在这上面. 你会发现当你的击球时间和节奏得到改善之后,有些技术问题也会随之解决,击 ...

  • 肝功检查有4项很关键,2个方法轻松降低指标,养肝其实很简单

    肝脏参与人体多种功能的运转,不仅可以分泌胆汁帮助人体消化,还为人体承担着排毒代谢的重要责任. 肝脏受损后,身体一般没有特别明显的疼痛感,所以肝脏疾病容易被人忽略,耽误治疗时机. 检查肝功,这4项指标很 ...

  • 甲状腺医生杨国平解读:甲状腺囊肿简单食疗有哪些?

    得了疾病不想去医院,或者是在治疗后想通过食疗加速身体的恢复,其实,甲状腺囊肿也是可以食疗的,下面就为大家介绍一下简单地食疗有哪些? 饮食调养方法一:紫菜粥取干紫菜15克,猪肉末50克,精盐5克,味精1 ...

  • 一个简单的“捺”,被米芾写尽变化!

    <兰亭序>中,王羲之的二十一个"之"字各个不同,没想到从北宋书法家米芾的书法中捺也多种多样.而关于捺的几种写法也给各位书友总结好了,我们来一起看看吧- 01 三折捺 这 ...

  • 白菜腐竹生蚝煲,鲜甜开胃的潮汕菜,做法还很简单

    夏天天气,经常胃口不开,山哥给大家推荐一道白菜腐竹生蚝煲,鲜甜开胃又易学 夏天天气,经常胃口不开,山哥给大家推荐一道白菜腐竹生蚝煲,鲜甜开胃又易学 展开

  • 早晚温差大,试试这些穿搭范本,变美超简单!

    Hi,这里是搭搭 一个专注穿衣打扮,专属你美丽的时尚达人! ▼ 主编:搭搭 / 时尚编辑:百香果 小程序:巧百搭小卖部 虽然立夏已过,但是温度还是不能和盛夏相提并论. 没有炎热夏季那般热辣滚烫,但天气 ...

  • 上班族学生党快手早餐,10分钟搞定,简单好吃

    上班族学生党快手早餐,10分钟搞定,简单好吃

  • 刘雪莹:7步减肥瑜伽,简单甩掉多余的脂肪!

    刘雪莹:7步减肥瑜伽,简单甩掉多余的脂肪!