mqtt-7

作者:Roger Light <[roger@atchoo.org](mailto:roger@atchoo.org)>
译者:penghuster

名字

mqtt — MQ Telemetry Transport(消息队列遥感传输)

Synopsis(概要)

MQTT

描述

MQTT 是一个轻量级的 发布/订阅消息协议。它可以很好的用于低电量传感器,另外它也可以用于更多场景。

此文档描述 MQTT 3.1 的一些特征,为了帮助终端用户需要了解更多的
MQTT 相关信息,请查看http://mqtt.org/

发布/订阅

MQTT协议是基于发布消息与订阅主题的(或pub/sub)。多客户连接到一个 broker,并订阅其关注主题。客户连接到该 broker,并发布主题消息。许多客户端可能订阅同一个主题,并按照各自需求处理该信息。broker 和 MQTT 作为一个简单通用的接口提供连接。这意味着你可以保存所有的订阅消息到数据库、推特、Cosm、或简单的文本文件。

主题/订阅

在 MQTT 中消息是按照主题发布的,没有必要对主题进行专门配置,在消息发布时候指定主题就够了。主题是以斜杠(/)形式层级组织。这样就可以合理安排共同的主题的创建,跟文件系统的组织方式很像。例如,许多电脑都需要发布其硬盘的温度信息到下面一个主题,把下面的主题用适当的电脑名和硬盘名替代:
sensors/COMPUTER_NAME/temperature/HARDDRIVE_NAME

客户端通过创建订阅来接收消息。一个订阅可以是一个明确的主题,在此情况下客户端仅仅能够接收该主题下的消息,订阅主题也可以包含通配符。+ 和 # 两个通配符是有效的。

+ 能被用作单一层级的通配符。如下主题能够用于订阅所有的电脑的硬盘温度:
sensors/+/temperature/+

另一个例子,对于主题 "a/b/c/d",下面的主题订阅都能够匹配该主题:

  • a/b/c/d
  • +/b/c/d
  • a/+/c/d
  • a/+/+/d
  • +/+/+/+
    下面的订阅主题将不能够匹配:
  • a/b/c
  • b/+/c/d
  • +/+/+

通配符 # 能被用于所有剩余层级。这意味着 # 必须是订阅的结尾字符。对于主题 "a/b/c/d",下面的订阅将是匹配的:

  • a/b/c/d
  • #
  • a/#
  • a/b/#
  • a/b/c/#
  • +/b/c/#
    零长度的主题层级是有效的,它可能导致一些轻微的晦涩行为。例如,主题 "a//topic" 可以正确匹配订阅 "a/+/topic"。同样地,零长度主题层级可以存在于一个主题字符串的开头与结尾,所以 "/a/topic" 将匹配订阅 “+/a/topic”、“#”和“/#”,并且主题 “a/topic/” 将匹配订阅“a/topic/+”或“a/topic/#”。

服务质量

MQTT 定义了三个级别的服务质量(QoS)。QoS 定义了 broker/client 如何努力确保消息被正确接收。消息可以以任何 QoS 级别发送,并且客户端可以尝试以任何 QoS 级别订阅主题。这意味着客户端选择其将收到的最大的 QoS。例如,如果一个消息以 QoS 2 发布,并且客户端以 QoS 0 订阅,此消息将被按照 QoS 0 传送到客户端。如果另一个客户端也订阅了该主题,但是 QoS 为 2,那么此客户端将以 QoS 2 接收到同样的消息。对于第二个例子,如果客户端是以 QoS 2进行订阅,但此消息以 QoS 0 发布,则此客户端将以 QoS 0 接收该消息。

QoS 级别越高越可靠,但是牵涉更高的延迟,并有更高的带宽需求。

  • 0:broker/client 将传送消息一次,并且无确认。
  • 1:broker/client 将传送消息至少一次,并且需要确认。
  • 2:broker/client 将通过使用 4 次握手准确地传送消息一次。

保留标志

所有的消息都可以被设置为保留。这意味着即使一个消息对于当前所有的订阅者都已经发送,broker 仍将保留此消息。如果一个匹配该保留消息主题的新订阅者到达,那么次保留消息将被发送到此客户端。这对于实现“最后一次正确”的机制是很有用的。如果一个主题消息很少更新,且没有设置保留标志,一个新来的订阅客户端可能不得不等待很长一段时间才能收到一个更新。对于一个设置保留标志的消息来说,客户端将立即接收到更新。

清除会话 / 持久连接

一个设置了清除会话(有时也叫做清楚开始标志)标识的连接,如果清除会话设置为 false,那么此连接就是一个持久连接。这意味着当客户端断开连接时,任何订阅者都将保留,且 QoS 为 1 或 2 的任何订阅消息队列都将存储下来,直到再次成功连接。如果清除会话标志为 true,那么当客户端断开连接时,所有订阅者都将被移除。

遗嘱

当客户端连接到 broker 时,它可以通知该 broker 表明其有一个遗嘱。当客户端异常断开时,它希望 broker 发送一个消息。此消息的主题、QoS 和 保留标志 与任何其它消息保持一样。


版权声明:自由转载-非商用-非衍生-保持署名创意共享3.0许可证

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容