常见的mq有Kafka,RocketMQ和RabbitMQ,大家也很常见。 前者很常见,属于微服务间的mq。
那么MQTT是什么呢?MQTT属于IoT也就是物联网的概念。
mqtt.js是MQTT在nodejs端的实现。
主要了解下以下两个概念:
- MQTT关键名词解释
- P2P消息和Pub/Sub消息
MQTT关键名词解释
MQTT是一个物联网MQTT协议,主要解决的是物联网IoT网络情况复杂的问题。
使用场景主要为数据传输:
- 车联网(远程控制,汽车数据上传)
- IM通讯(1对1单聊,1对多朋友圈)
- 视频直播(弹幕通知,聊天互动)
- 智能家居(电器数据上传,遥控指令)
每个MQTT实例都对应一个全局唯一的服务接入点,在通过mqtt.connect(url)与server(broker)建立连接时,broker的url都是一致的,本地的前端与服务端间建立连接的url都是统一的,只是在clientId进行区分即可。
Pub/Sub消息
Pub/Sub消息就是订阅和发布的模式,类似事件监听和广播;MQTT除了支持Pub/Sub的模式,还支持P2P的模式
P2P消息
P2P,全称为(Point to Point),一对一的消息收发模式,只有一个消息发送者和一个消息接收者。
P2P模式下,消息发送者明确知道消息的预期接收者,并且这个消息只能被这个特定的客户端消费。发送者发送消息时,通过Topic指定接收者,接收者无需订阅即可获得该消息。P2P 模式不仅降低注册订阅的成本,而且因为对链路有优化,所以降低推送延迟。
P2P模式和Pub/Sub模式的区别
发送消息时:
(Pub/Sub) 发送者需要按照与接受者约定好的Topic发送消息
(P2P) 发送者无需按照Tpic发送,可以直接按照规范进行发送
接收消息时:
(Pub/Sub) 接收者需要提前订阅topic才能接消息
(P2P) 无需订阅即可接收消息