MQTT 是基于 发布(Publish)/订阅(Subscribe) 模式来进行通讯及数据交换的,与 HTTP 的 请求(Request)/应答(Response) 的模式有本质的不一样。git
订阅者(Subscriber) 会向 消息服务器(Broker) 订阅一个 主题(Topic) 。成功订阅后,消息服务器会将该主题下的消息转发给全部的订阅者。github
主题(Topic)以 ‘/’ 为分隔符区分不一样的层级。包含通配符 ‘+’ 或 ‘#’ 的主题又称为 主题过滤器(Topic Filters),不含通配符的称为 主题名(Topic Names) 。例如:数据库
sensor/1/temperature sensor/1/# sensor/+/temperature
MQTT Broker 也称为 MQTT 消息服务器,它能够是运行了 MQTT 消息服务器软件的一台服务器或一个服务器集群。MQTT Broker 负责接收来自客户端的网络链接,并处理客户端的订阅/取消订阅(Subscribe/Unsubscribe)、消息发布(Publish)请求,同时也会将客户端发布的消息转发给其余订阅者。浏览器
MQTT Broker 普遍应用于:电力、新能源、智慧城市、智能家居、智能抄表、车联网、金融与支付、运营商等行业。安全
mosquitto_pub
、mosquitto_sub
命令行客户端。Mosquitto 比较轻量,适合在从低功耗单板计算机到完整服务器的全部设备上使用。多服务器节点集群,且支持节点的自动发现。相对于单服务器,集群能经过多台服务器之间的协做带来如下优点:服务器
数据持久化的主要使用场景包括将客户端上下线状态,订阅主题信息,消息内容,消息抵达后发送消息回执等操做记录到 Redis、MySQL、PostgreSQL、MongoDB、Cassandra 等各类数据库中。网络
HTTP 消息发布接口支持,使上层应用能更方便的经过 REST API 给设备发送消息;并发
MQTT Broker 桥接,支持不一样 MQTT Broker 或不一样集群之间的消息桥接。桥接能够很方便的将消息桥接到云服务、流式服务、或其余 MQTT 消息服务器。桥接能够完成一些单纯使用集群没法实现的功能:跨 VPC 部署、支持异构节点、提升单个应用的服务上限;负载均衡
支持共享订阅。共享订阅是一种机制,容许将订阅组的消息分发均匀地分发给订阅组成员。在共享订阅中,订阅同一主题的客户机依次接收此主题下的消息。同一消息不会发送给多个订阅客户端,从而实现多个订阅客户端之间的负载均衡;eclipse
规则引擎支持,用于配置消息流与设备事件的处理、响应规则。规则描述了数据从哪里来、如何筛选并处理数据、处理结果到哪里去三个配置,即一条可用的规则包含三个要素:触发事件(知足某个条件时触发)、处理规则(从上下文信息中过滤和处理数据)、响应动做(如持久化到数据库、从新发布处理后的消息、转发消息到消息队列等)。
为了方便测试,咱们使用 EMQ 提供的线上版 Broker,该 Broker 版本包含了 EMQ X Enterprise 的全部功能。
Broker 地址: broker.emqx.io
Broker 端口: 188三、8883(SSL)、8083(Websocket)、8084(WSS)
链接客户端咱们使用 EMQ 提供的线上版 Websocket 工具:http://tools.emqx.io。
使用浏览器打开地址 http://tools.emqx.io,点击左下角的 New Connection 按钮,并在右侧框里填写连接信息,填写好必填字段后点击 Connect 按钮建立连接并链接至 Broker。
链接成功后,点击右下角的 Write a message 弹出消息发布框,填写好 Topic 及 Payload 后点击发送图标便可发布消息。
订阅普通主题
在中间的 Subscriptions 模块里,订阅 hello 主题。此时给 hello 主题发送消息的话,消息列表里会收到该消息(左侧为接收到的消息)。
订阅通配符主题
订阅通配符主题 testtopic/#,并给 testtopic/1 主题发送消息,此时消息列表里会接收到该消息。
更多信息请访问咱们的官网 emqx.io,或关注咱们的开源项目 github.com/emqx/emqx ,详细文档请访问 官方文档。