MQTT 核心概念

简介: MQTT 核心概念

MQTT通过以下方式进行数据交互。


客户端Publisher发送一条消息message给MQTT Broker,发送消息时需要关联一个topic和QoS(Quality of Service)。topic指定了消息要发送给哪个主题,QoS指定了消息可靠性等级(这个在后边会讲到)。假设当前消息发给主题topic1,并且有两个客户端Subscriber分别订阅了topic1。MQTT Broker收到消息后,发现消息是发送给topic1的,于是将这份消息分别转发给它的两个订阅者。


MQTT的核心概念包括:


Broker,又称Server,是MQTT的服务端,负责与客户端建立连接,接收并转发消息,接收订阅和取消订阅请求等。


Client,使用MQTT协议的程序或设备,负责与Broker建立连接,发送或者接收数据,订阅主题或取消订阅。


Message,在MQTT协议中传输的数据,当消息被传输时,通常和一个主题名称(topic name)以及一个QoS(服务质量)关联起来。


Topic,主题有两层含义,在发布消息时,主题会和消息关联起来,告诉Broker这条消息要发给哪个主题。在订阅消息时,客户端需要告诉Broker自己对哪个主题感兴趣,一旦有消息发给这个主题,Broker会将消息发给主题的订阅者。主题支持统配符,对于使用通配符的主题,我们成为Topic Filter。


Publish,客户端发送消息给Broker的过程。发送消息时需要指定topic和QoS。Broker会将消息转发给订阅了该topic的其它客户端。


Subscribe,客户端订阅主题的过程。客户端告诉Broker,自己对某个topic感兴趣,当有其它客户端发送消息给这个topic时,Broker会转发该消息给自己。客户端可以取消订阅,这个过程称作Unsubscribe,取消订阅后,Broker不会再转发消息给当前客户端。


QoS,Quality of Service。消息可靠性传递的参数,有3个值,分别是:

  • 0,消息只发送一次,不保证发送成功。
  • 1,消息最少发送一次,保证发送成功。因为可能发送多次,因此接收方可能收到重复消息。
  • 2,消息只发送一次,保证成功。接收方不会接到重复消息。


发送消息时,可以指定QoS,如果QoS>0,那么消息一定会发到Broker。订阅主题时,也可以指定QoS,如果QoS>0,那么Broker一定会将消息发给订阅者,不会丢失。这里要要注意,消息从发布者到订阅者,是分两步走的,第一步有发布者发布到MQTT Broker,第二步是MQTT Broker转发消息到订阅者。所以只有当发布消息时,指定QoS>0,并且订阅主题时,QoS>0,消息才能可靠的从发布客户端发送到订阅客户端端。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
打赏
0
1
1
0
0
分享
相关文章
MQTT X连接阿里云微服务消息队列MQTT
MQTT X 是 EMQ 开源的一款优雅的跨平台 MQTT 5.0 桌面客户端,它支持 macOS, Linux, Windows。MQTT X 的 UI 采用了聊天界面形式,简化了页面操作逻辑,用户可以快速创建连接,允许保存多个客户端,方便用户快速测试 MQTT/MQTTS 连接,及 MQTT 消息的订阅和发布。本文演示如何使用该工具快速连接阿里云微服务消息队列MQTT,并进行消息的发布和订阅测试。
3947 0
MQTT X连接阿里云微服务消息队列MQTT
开发者如何使用云消息队列 MQTT 版
【10月更文挑战第14天】开发者如何使用云消息队列 MQTT 版
535 29
消息中间件RabbitMQ---概述和概念 【一】
该文章提供了对消息中间件RabbitMQ的全面概述,包括其核心概念、工作原理以及与AMQP和JMS的关系。
消息中间件RabbitMQ---概述和概念 【一】
【揭秘】如何让Kratos微服务与NATS消息队列完美融合?看完这篇你就懂了!
【8月更文挑战第22天】Kratos是基于Go语言的微服务框架,提供全面工具助力开发者构建高性能应用。NATS作为轻量级消息队列服务,适用于分布式系统消息传递。本文详细介绍如何在Kratos项目中集成NATS,包括创建项目、安装NATS客户端、配置连接、初始化NATS、发送与接收消息等步骤,助您轻松实现高效微服务架构。
125 1
看看如何使用 C# 代码让 MQTT 进行完美通信
看看如何使用 C# 代码让 MQTT 进行完美通信
858 0
详细介绍 MQTT 的工作原理,包括 MQTT 协议的特点、核心概念以及消息传递的流程
详细介绍 MQTT 的工作原理,包括 MQTT 协议的特点、核心概念以及消息传递的流程
3970 1
RabbitMQ揭秘:轻量级消息队列的优缺点全解析
**RabbitMQ简介** RabbitMQ是源自电信行业的消息中间件,支持AMQP协议,提供轻量、快速且易于部署的解决方案。它拥有灵活的路由配置,广泛的语言支持,适用于异步处理、负载均衡、日志收集和微服务通信等场景。然而,当面临大量消息堆积或高吞吐量需求时,性能可能会下降,并且扩展和开发成本相对较高。
390 0
消息队列 MQ产品使用合集之Remoting协议是否可以直接和proxy交互的吗
阿里云消息队列MQ(Message Queue)是一种高可用、高性能的消息中间件服务,它允许您在分布式应用的不同组件之间异步传递消息,从而实现系统解耦、流量削峰填谷以及提高系统的可扩展性和灵活性。以下是使用阿里云消息队列MQ产品的关键点和最佳实践合集。
119 0