﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-xiaomage234-随笔分类-IoT</title><link>http://www.blogjava.net/xiaomage234/category/55365.html</link><description>生命本就是一次凄美的漂流，记忆中放不下的，永远是孩提时代的那一份浪漫与纯真！</description><language>zh-cn</language><lastBuildDate>Fri, 06 Nov 2020 20:21:43 GMT</lastBuildDate><pubDate>Fri, 06 Nov 2020 20:21:43 GMT</pubDate><ttl>60</ttl><item><title>Cat.1 现状[转]</title><link>http://www.blogjava.net/xiaomage234/archive/2020/11/06/435716.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Fri, 06 Nov 2020 06:36:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2020/11/06/435716.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/435716.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2020/11/06/435716.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/435716.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/435716.html</trackback:ping><description><![CDATA[from：https://mp.weixin.qq.com/s/s-AuC_IDS5GEamRwX286MQ<br /><br /><br /><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;">随着紫光展锐、ASR 等芯片厂商发布性价比更高的 Cat.1 芯片之后，Cat.1 模组厂商扎堆发布了自家的模组，<br />使得市场上的 Cat.1 模组价格已经迅速降至 45-60 元，玩家众多，竞争惨烈，基本重走 NB-IOT 的老路 &#8212;&#8212; 量未起，价已跌。</p><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;">Cat.1 芯片原厂：</p><ul style="margin: 0px; padding: 0px 0px 0px 32px; max-width: 100%; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;"><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">高通 MDM9207-1(2016 年发布)</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">紫光展锐春藤 8910DM（28nm工艺，集成蓝牙和WiFi 室内定位）</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">翱捷 ASR3601</span></p></li></ul><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;">Cat.1 模组厂商（不完全统计）：</p><ul style="margin: 0px; padding: 0px 0px 0px 32px; max-width: 100%; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;"><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">中移物联网</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">移远通信</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">合宙电子</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">移柯通信</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">域格信息</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">广和通</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">芯讯通</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">高新兴物联</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">美格智能</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">有方科技</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">有人信息</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">信位通讯</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">锐骐(厦门)电子</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">深圳信可通讯</span></p></li></ul><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;">Cat.1 优势</p><ul style="margin: 0px; padding: 0px 0px 0px 32px; max-width: 100%; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;"><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">相对 NB-IOT，其通信速率优势明显</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">相对 eMTC，其网络成本低</span></p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;">相对 Cat.4，其具有一定的成本优势</span></p></li></ul><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;">Cat.1 劣势：</p><ul style="margin: 0px; padding: 0px 0px 0px 32px; max-width: 100%; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;"><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em; font-size: inherit; color: inherit; line-height: inherit;">现阶段芯片厂家少</p><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em; font-size: inherit; color: inherit; line-height: inherit;">国外以高通为主，辅以 Sequans、Altair。</p><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em; font-size: inherit; color: inherit; line-height: inherit;">国内主要是展锐和翱捷。</p></li><li style="margin: 0px 0px 0.5em; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em; font-size: inherit; color: inherit; line-height: inherit;">现阶段价格偏高</p><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; clear: both; min-height: 1em; font-size: inherit; color: inherit; line-height: inherit;">NB-IoT、Cat.1、Cat.4 模组价格：</p><figure style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; color: inherit; line-height: inherit;"><br /></figure></li></ul><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;">cat1 的主要市场和应用场景：</p><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;">Cat.1 仍处于商用初期，落地的应用场景和案例还较少，一些明确的场景包括了共享、金融支付、工业控制、车载支付、公网对讲、POS 等等。</p><h2><span style="margin: 0px 3px 0px 0px; padding: 3px 10px 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: inherit; line-height: inherit; display: inline-block; font-weight: normal; background: #ec4444; color: #ffffff; border-top-right-radius: 3px; border-top-left-radius: 3px;">总结</span></h2><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;">工信部办公厅发布了《关于深入推进移动物联网全面发展的通知》（以下简称《通知》）同时为 NB-IOT 和 Cat.1 站台，未来 NB-IOT 依旧很香，Cat.1 则前途大好。</p><p style="margin: 1.5em 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: inherit; font-family: &quot;Helvetica Neue&quot;, Helvetica, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif; font-size: inherit; text-align: justify; background-color: #ffffff; line-height: inherit; box-sizing: border-box !important; overflow-wrap: break-word !important;">随着新基建的启动，5G 打头，未来将是 NB-IOT、4G（包括 Cat.1）、5G 共同承载蜂窝物联网的连接，以应对不同层次的物联网业务需求。</p><img src ="http://www.blogjava.net/xiaomage234/aggbug/435716.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2020-11-06 14:36 <a href="http://www.blogjava.net/xiaomage234/archive/2020/11/06/435716.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QoS等级 与 会话[转]</title><link>http://www.blogjava.net/xiaomage234/archive/2020/10/12/435690.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Mon, 12 Oct 2020 06:19:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2020/10/12/435690.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/435690.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2020/10/12/435690.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/435690.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/435690.html</trackback:ping><description><![CDATA[from：https://www.cnblogs.com/schips/p/12262587.html<br /><br /><br /><h2>背景</h2><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">QoS 等级 与 通信的流程有关，直接影响了整个通信。而且篇幅比较长，所以我觉得应该单独拎出来讲一下。</p><h2>概念</h2><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">QoS 代表了 服务质量等级。 设置上，由2 位 的二进制控制，且值不允许为 3(0x11)。</p><div style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin: 0px 0px 20px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff; overflow: auto;"><table style="-webkit-tap-highlight-color: transparent; width: 868px; border-style: solid; border-color: #dfdfdf; margin: 0px auto; border-collapse: collapse; word-break: break-word; overflow-x: auto !important;"><thead style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; border-top: 2px solid var(--color-text-primary)  !important; border-bottom: 2px solid var(--color-text-primary)  !important; background: var(--BackgroundColor)  !important;"><tr style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; background-color: #eeeeee; border-top: 1px solid var(--color-text-primary)  !important;"><th style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; background-color: #fafafa; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border: none !important; background-image: initial !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important;"><span style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-weight: bolder;">QoS值</span></th><th style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; background-color: #fafafa; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border: none !important; background-image: initial !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important;"><span style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-weight: bolder;">Bit 2</span></th><th style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; background-color: #fafafa; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border: none !important; background-image: initial !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important;"><span style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-weight: bolder;">Bit 1</span></th><th style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; background-color: #fafafa; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border: none !important; background-image: initial !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important;"><span style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-weight: bolder;">描述</span></th></tr></thead><tbody style="-webkit-tap-highlight-color: transparent; box-sizing: border-box;"><tr style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; background-color: var(--color-white); border-top: 1px solid var(--color-text-primary)  !important;"><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">0</td><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">0</td><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">0</td><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">最多分发一次</td></tr><tr style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; background-color: var(--color-white); border-top: 1px solid var(--color-text-primary)  !important;"><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">1</td><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">0</td><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">1</td><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">至少分发一次</td></tr><tr style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; background-color: var(--color-white); border-top: 1px solid var(--color-text-primary)  !important;"><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">2</td><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">1</td><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">0</td><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">只分发一次</td></tr><tr style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; background-color: var(--color-white); border-top: 1px solid var(--color-text-primary)  !important; border-bottom: 2px solid var(--color-text-primary)  !important;"><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">-</td><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">1</td><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">1</td><td style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding: 8px 14px; border-collapse: collapse; min-width: 50px; word-break: break-all; white-space: nowrap; border-width: initial !important; border-style: none !important; border-color: initial !important; background: transparent !important;">保留位</td></tr></tbody></table></div><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">要注意的是，QoS 是&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Sender</code>&nbsp;和&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Receiver</code>&nbsp;之间达成的协议，不是&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Publisher</code>&nbsp;和&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Subscriber</code>&nbsp;之间达成的协议。</p><blockquote style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; background-color: #ffffff; margin-right: 0px; margin-left: 0px; border-top: 0px; border-bottom: 0px; border-right: 0px; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; border-left-width: 0.25em !important; border-left-color: #dfe2e5 !important; padding: 0px 1em !important; margin-top: 0px !important; margin-bottom: 16px !important; color: #6a737d !important;"><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px;">也就是说&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Publisher</code>&nbsp;发布一条 QoS1 的消息，只能保证&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Broker</code>&nbsp;能至少收到一次这个消息；至于对应的&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Subscriber</code>&nbsp;能否至少收到一次这个消息，还要取决于&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Subscriber</code>&nbsp;在&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Subscribe</code>&nbsp;的时候和&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Broker</code>&nbsp;协商的 QoS 等级。</p><blockquote style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-right: 0px; margin-left: 0px; border-top: 0px; border-bottom: 0px; border-right: 0px; border-left-width: 0.25em !important; border-left-color: #dfe2e5 !important; padding: 0px 1em !important; margin-top: 0px !important; margin-bottom: 0px !important; color: #6a737d !important;"><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px;">这里又牵扯出一个概念："QoS 降级"：在 MQTT 协议中，从 Broker 到 Subscriber 这段消息传递的实际 QoS 等于 "Publisher 发布消息时指定的 QoS 等级和 Subscriber 在订阅时与 Broker 协商的 QoS 等级，这两个 QoS 等级中的最小那一个。"</p></blockquote></blockquote><h3>QoS 0 的通信时序图</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">此时，整个过程中的&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Sender</code>&nbsp;不关心&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Receiver</code>&nbsp;是否收到消息，它"尽力"发完消息，至于是否有人收到，它不在乎。</p><div data-processed="true" style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; white-space: pre-wrap; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;"><svg id="mermaid-1602471087294" width="100%" xmlns="http://www.w3.org/2000/svg" height="100%" style="max-width:675px;" viewbox="-75 -50 675 336"><g></g><g><line id="actor0" x1="75" y1="5" x2="75" y2="285" stroke-width="0.5px" stroke="#999"></line><rect x="0" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="75" y="32.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="75" dy="0">发布者</tspan></text></g><g><line id="actor1" x1="275" y1="5" x2="275" y2="285" stroke-width="0.5px" stroke="#999"></line><rect x="200" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="275" y="32.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="275" dy="0">服务器</tspan></text></g><g><line id="actor2" x1="475" y1="5" x2="475" y2="285" stroke-width="0.5px" stroke="#999"></line><rect x="400" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="475" y="32.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="475" dy="0">订阅者</tspan></text></g><defs><marker id="arrowhead" refx="5" refy="2" markerwidth="6" markerheight="4" orient="auto"></marker></defs><defs><marker id="crosshead" markerwidth="15" markerheight="8" orient="auto" refx="16" refy="4"></marker></defs><g><text x="175" y="93" style="text-anchor: middle;">PUBLISH (QoS0,Msg-A)</text><line x1="75" y1="100" x2="275" y2="100" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g></g><g><text x="377.5" y="128" style="text-anchor: middle;">PUBLISH(QoS0,Msg-A)</text><line x1="280" y1="135" x2="475" y2="135" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="75" y="163" style="text-anchor: middle;">Delete Msg-A</text></g><g><rect x="0" y="220" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="75" y="252.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="75" dy="0">发布者</tspan></text></g><g><rect x="200" y="220" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="275" y="252.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="275" dy="0">服务器</tspan></text></g><g><rect x="400" y="220" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="475" y="252.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="475" dy="0">订阅者</tspan></text></g><text x="187.5" y="-25">QoS 0：At most one(Fire and forget)</text></svg></div><h3>QoS1 的通信时序图</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">此时，<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Sender</code>&nbsp;发送的一条消息，<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Receiver</code>&nbsp;至少能收到一次，也就是说&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Sender</code>&nbsp;向&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Receiver</code>&nbsp;发送消息，如果发送失败，会继续重试，直到&nbsp;<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Receiver</code>&nbsp;收到消息为止，但是因为重传的原因，<code style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace !important; font-size: 12px !important; line-height: 1.8; margin: 0px 4px !important; vertical-align: middle; display: inline; overflow-x: auto; background-color: rgba(27, 31, 35, 0.05) !important; border: none !important; padding: 0.2em 0.4em !important; border-radius: 3px !important;">Receiver</code>&nbsp;有可能会收到重复的消息；</p><div data-processed="true" style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; white-space: pre-wrap; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;"><svg id="mermaid-1602471087312" width="100%" xmlns="http://www.w3.org/2000/svg" height="100%" style="max-width:675px;" viewbox="-75 -50 675 601"><g></g><g><line id="actor3" x1="75" y1="5" x2="75" y2="550" stroke-width="0.5px" stroke="#999"></line><rect x="0" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="75" y="32.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="75" dy="0">发布者</tspan></text></g><g><line id="actor4" x1="275" y1="5" x2="275" y2="550" stroke-width="0.5px" stroke="#999"></line><rect x="200" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="275" y="32.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="275" dy="0">服务器</tspan></text></g><g><line id="actor5" x1="475" y1="5" x2="475" y2="550" stroke-width="0.5px" stroke="#999"></line><rect x="400" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="475" y="32.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="475" dy="0">订阅者</tspan></text></g><defs><marker id="arrowhead" refx="5" refy="2" markerwidth="6" markerheight="4" orient="auto"></marker></defs><defs><marker id="crosshead" markerwidth="15" markerheight="8" orient="auto" refx="16" refy="4"></marker></defs><g><text x="75" y="93" style="text-anchor: middle;">Store (Msg-A)</text></g><g><text x="175" y="158" style="text-anchor: middle;">PUBLISH (QoS1,Msg-A)</text><line x1="75" y1="165" x2="275" y2="165" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="275" y="193" style="text-anchor: middle;">Store (Msg-A)</text></g><g><text x="375" y="258" style="text-anchor: middle;">PUBLISH (QoS1,Msg-A)</text><line x1="275" y1="265" x2="475" y2="265" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="175" y="293" style="text-anchor: middle;">PUBACK (QoS1)</text><line x1="275" y1="300" x2="75" y2="300" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"></line></g><g><text x="75" y="328" style="text-anchor: middle;">Delete (Msg-A)</text></g><g><text x="375" y="393" style="text-anchor: middle;">PUBACK (QoS1,Msg-A)</text><line x1="475" y1="400" x2="275" y2="400" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"></line></g><g><text x="275" y="428" style="text-anchor: middle;">Delete (Msg-A)</text></g><g><rect x="0" y="485" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="75" y="517.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="75" dy="0">发布者</tspan></text></g><g><rect x="200" y="485" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="275" y="517.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="275" dy="0">服务器</tspan></text></g><g><rect x="400" y="485" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="475" y="517.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="475" dy="0">订阅者</tspan></text></g><text x="187.5" y="-25">QoS 1：At least one</text></svg></div><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">1）Sender 向 Receiver 发送一个带有消息数据的 PUBLISH 包， 并在本地保存这个 PUBLISH 包。</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">2）Receiver 收到 PUBLISH 包以后，向 Sender 发送一个 PUBACK 数据包，PUBACK 数据包没有消息体（Payload），在可变头中（Variable header）中有一个包标识（Packet Identifier），和它收到的 PUBLISH 包中的 Packet Identifier 一致。</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">3）Sender 收到 PUBACK 之后，根据 PUBACK 包中的 Packet Identifier 找到本地保存的 PUBLISH 包，然后丢弃掉，一次消息的发送完成。</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">4）如果 Sender 在一段时间内没有收到 PUBLISH 包对应的 PUBACK，它将该 PUBLISH 包的 DUP 标识设为 1（代表是重新发送的 PUBLISH 包），然后重新发送该 PUBLISH 包。重复这个流程，直到收到 PUBACK，然后执行第 3 步。</p><h3>QoS 2 的通信时序图</h3><blockquote style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; background-color: #ffffff; margin-right: 0px; margin-left: 0px; border-top: 0px; border-bottom: 0px; border-right: 0px; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; border-left-width: 0.25em !important; border-left-color: #dfe2e5 !important; padding: 0px 1em !important; margin-top: 0px !important; margin-bottom: 16px !important; color: #6a737d !important;"><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px;">QoS2 不仅要确保 Receiver 能收到 Sender 发送的消息，还要保证消息不重复。它的重传和应答机制就要复杂一些，同时开销也是最大的。</p></blockquote><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">Sender 发送的一条消息，Receiver 确保能收到而且只收到一次，也就是说 Sender 尽力向 Receiver 发送消息，如果发送失败，会继续重试，直到 Receiver 收到消息为止，同时保证 Receiver 不会因为消息重传而收到重复的消息。</p><div data-processed="true" style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; white-space: pre-wrap; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;"><svg id="mermaid-1602471087341" width="100%" xmlns="http://www.w3.org/2000/svg" height="100%" style="max-width:700px;" viewbox="-75 -50 700 936"><g></g><g><line id="actor6" x1="75" y1="5" x2="75" y2="885" stroke-width="0.5px" stroke="#999"></line><rect x="0" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="75" y="32.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="75" dy="0">发布者</tspan></text></g><g><line id="actor7" x1="275" y1="5" x2="275" y2="885" stroke-width="0.5px" stroke="#999"></line><rect x="200" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="275" y="32.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="275" dy="0">服务器</tspan></text></g><g><line id="actor8" x1="475" y1="5" x2="475" y2="885" stroke-width="0.5px" stroke="#999"></line><rect x="400" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="475" y="32.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="475" dy="0">订阅者</tspan></text></g><defs><marker id="arrowhead" refx="5" refy="2" markerwidth="6" markerheight="4" orient="auto"></marker></defs><defs><marker id="crosshead" markerwidth="15" markerheight="8" orient="auto" refx="16" refy="4"></marker></defs><g><text x="75" y="93" style="text-anchor: middle;">Store (Msg-A)</text></g><g><text x="175" y="158" style="text-anchor: middle;">PUBLISH (QoS2,Msg-A,DUP=0)</text><line x1="75" y1="165" x2="275" y2="165" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="275" y="193" style="text-anchor: middle;">Store (Msg-A)</text></g><g><text x="175" y="258" style="text-anchor: middle;">PUBREC (QoS2,Msg-A)</text><line x1="275" y1="265" x2="75" y2="265" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"></line></g><g><text x="175" y="293" style="text-anchor: middle;">PUBREL (QoS2,Msg-A)</text><line x1="75" y1="300" x2="275" y2="300" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="328" style="text-anchor: middle;">PUBLISH (QoS2,Msg-A,DUP=0)</text><line x1="275" y1="335" x2="475" y2="335" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="175" y="363" style="text-anchor: middle;">PUBCOMP (QoS2,Msg-A)</text><line x1="275" y1="370" x2="75" y2="370" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"></line></g><g><text x="75" y="398" style="text-anchor: middle;">Delete (Msg-A)</text></g><g><text x="475" y="463" style="text-anchor: middle;">Store (Msg-A)</text></g><g><text x="375" y="528" style="text-anchor: middle;">PUBREC (QoS2,Msg-A)</text><line x1="475" y1="535" x2="275" y2="535" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"></line></g><g><text x="375" y="563" style="text-anchor: middle;">PUBREL (QoS2,Msg-A)</text><line x1="275" y1="570" x2="475" y2="570" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="475" y="598" style="text-anchor: middle;">Notify (Msg-A)</text></g><g><text x="375" y="663" style="text-anchor: middle;">PUBCOMP (QoS2,Msg-A)</text><line x1="475" y1="670" x2="275" y2="670" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"></line></g><g><text x="275" y="698" style="text-anchor: middle;">Delete (Msg-A)</text></g><g><text x="475" y="763" style="text-anchor: middle;">Delete (Msg-A)</text></g><g><rect x="0" y="820" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="75" y="852.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="75" dy="0">发布者</tspan></text></g><g><rect x="200" y="820" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="275" y="852.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="275" dy="0">服务器</tspan></text></g><g><rect x="400" y="820" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3"></rect><text x="475" y="852.5" dominant-baseline="central" alignment-baseline="central" style="text-anchor: middle;"><tspan x="475" dy="0">订阅者</tspan></text></g><text x="200" y="-25">QoS 2：Exactly one</text></svg></div><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">QoS 使用 2 套请求/应答流程（一个 4 段的握手）来确保 Receiver 收到来自 Sender 的消息，且不重复：</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">1）Sender 发送 QoS 为 2 的 PUBLISH 数据包，数据包 Packet Identifier 为 P，并在本地保存该 PUBLISH 包；</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">2）Receiver 收到 PUBLISH 数据包以后，在本地保存 PUBLISH 包的 Packet Identifier P，并回复 Sender 一个 PUBREC 数据包，PUBREC 数据包可变头中的 Packet Identifier 为 P，没有消息体（Payload）；</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">3）当 Sender 收到 PUBREC，它就可以安全地丢弃掉初始的 Packet Identifier 为 P 的 PUBLISH 数据包，同时保存该 PUBREC 数据包，同时回复 Receiver 一个 PUBREL 数据包，PUBREL 数据包可变头中的 Packet Identifier 为 P，没有消息体；如果 Sender 在一定时间内没有收到 PUBREC，它会把 PUBLISH 包的 DUP 标识设为 1，重新发送该 PUBLISH 数据包（Payload）；</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">4）当 Receiver 收到 PUBREL 数据包，它可以丢弃掉保存的 PUBLISH 包的 Packet Identifier P，并回复 Sender 一个 PUBCOMP 数据包，PUBCOMP 数据包可变头中的 Packet Identifier 为 P，没有消息体（Payload）；</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">5）当 Sender 收到 PUBCOMP 包，那么它认为数据包传输已完成，它会丢弃掉对应的 PUBREC 包。如果 Sender 在一定时间内没有收到 PUBCOMP 包，它会重新发送 PUBREL 数据包。</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">我们可以看到在 QoS2 中，完成一次消息的传递，Sender 和 Reciever 之间至少要发送四个数据包，QoS2 是最安全也是最慢的一种 QoS 等级了。</p><h2>QoS 和会话（Session）</h2><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">客户端的会话状态包括：</p><ul style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding-left: 0px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff; margin-top: 0px !important; margin-bottom: 16px !important; margin-left: 0px !important;"><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">已经发送给服务端，但是还没有完成确认的QoS 1和QoS 2级别的消息</li><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">已从服务端接收，但是还没有完成确认的QoS 2级别的消息。</li></ul><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">服务端的会话状态包括：</p><ul style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding-left: 0px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff; margin-top: 0px !important; margin-bottom: 16px !important; margin-left: 0px !important;"><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">会话是否存在，即使会话状态的其它部分都是空。</li><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">客户端的订阅信息。</li><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">已经发送给客户端，但是还没有完成确认的QoS 1和QoS 2级别的消息。</li><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">即将传输给客户端的QoS 1和QoS 2级别的消息。</li><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">已从客户端接收，但是还没有完成确认的QoS 2级别的消息。</li><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">可选，准备发送给客户端的QoS 0级别的消息。</li></ul><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">保留消息不是服务端会话状态的一部分，会话终止时<span style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-weight: bolder;">不能</span>删除保留消息。</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">如果 Client 想接收离线消息，必须使用持久化的会话（CONNECT报文中可变头（byte8[1]）Clean Session = 0）连接到 Broker，这样 Broker 才会存储 Client 在离线期间没有确认接收的 QoS 大于 1 的消息。</p><h2>QoS 等级的选择</h2><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;"><span style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-weight: bolder;">在以下情况下你可以选择 QoS0</span>：</p><ul style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding-left: 0px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff; margin-top: 0px !important; margin-bottom: 16px !important; margin-left: 0px !important;"><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">Client 和 Broker 之间的网络连接非常稳定，例如一个通过有线网络连接到 Broker 的测试用 Client；</li><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">可以接受丢失部分消息，比如你有一个传感器以非常短的间隔发布状态数据，所以丢一些也可以接受；</li><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">你不需要离线消息。</li></ul><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;"><span style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-weight: bolder;">在以下情况下你应该选择 QoS1：</span></p><ul style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding-left: 0px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff; margin-top: 0px !important; margin-bottom: 16px !important; margin-left: 0px !important;"><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">你需要接收所有的消息，而且你的应用可以接受并处理重复的消息；</li><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">你无法接受 QoS2 带来的额外开销，QoS1 发送消息的速度比 QoS2 快很多。</li></ul><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;"><span style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-weight: bolder;">在以下情况下你应该选择 QoS2：</span></p><ul style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; padding-left: 0px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff; margin-top: 0px !important; margin-bottom: 16px !important; margin-left: 0px !important;"><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-type: disc;">你的应用必须接收到所有的消息，而且你的应用在重复的消息下无法正常工作，同时你也能接受 QoS2 带来的额外开销。</li></ul><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; color: #555555; font-family: -apple-system, system-ui, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; background-color: #ffffff;">实际上，QoS1 是应用最广泛的 QoS 等级，QoS1 发送消息的速度很快，而且能够保证消息的可靠性。虽然使用 QoS1 可能会收到重复的消息，但是在应用程序里面处理重复消息，通常并不是件难事。</p><img src ="http://www.blogjava.net/xiaomage234/aggbug/435690.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2020-10-12 14:19 <a href="http://www.blogjava.net/xiaomage234/archive/2020/10/12/435690.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>