有时候我们的项目中会用到
即时通讯
功能,比如电商系统中的客服聊天功能,还有在支付过程中,当用户支付成功后,第三方支付服务会回调我们的回调接口,此时我们需要通知前端支付成功。最近发现RabbitMQ可以很方便的实现即时通讯
功能,如果你没有特殊的业务需求,甚至可以不写后端代码,今天给大家讲讲如何使用RabbitMQ来实现即时通讯
!
MQTT协议
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级
通讯协议,该协议构建于TCP/IP
协议上。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。
MQTT相关概念
- Publisher(发布者):消息的发出者,负责发送消息。
- Subscriber(订阅者):消息的订阅者,负责接收并处理消息。
- Broker(代理):消息代理,位于消息发布者和订阅者之间,各类支持MQTT协议的消息中间件都可以充当。
- Topic(主题):可以理解为消息队列中的路由,订阅者订阅了主题之后,就可以收到发送到该主题的消息。
- Payload(负载);可以理解为发送消息的内容。
- QoS(消息质量):全称Quality of Service,即消息的发送质量,主要有
QoS 0
、QoS 1
、QoS 2
三个等级,下面分别介绍下:- QoS 0(Almost Once):至多一次,只发送一次,会发生消息丢失或重复;
- QoS 1(Atleast Once):至少一次,确保消息到达,但消息重复可能会发生;
- QoS 2(Exactly Once):只有一次,确保消息只到达一次。
RabbitMQ启用MQTT功能
RabbitMQ启用MQTT功能,需要先安装然RabbitMQ然后再启用MQTT插件。
首先我们需要安装并启动RabbitMQ,对RabbitMQ不了解的朋友可以参考《花了3天总结的RabbitMQ实用技巧,有点东西!》;
接下来就是启用RabbitMQ的MQTT插件了,默认是不启用的,使用如下命令开启即可;
rabbitmq-plugins enable rabbitmq_mqtt
- 开启成功后,查看管理控制台,我们可以发现MQTT服务运行在
1883
端口上了。
MQTT客户端
我们可以使用MQTT客户端来测试MQTT的即时通讯功能,这里使用的是
MQTTBox
这个客户端工具。
- 首先下载并安装好
MQTTBox
,下载地址:http://workswithweb.com/mqttbox.html
- 点击
Create MQTT Client
按钮来创建一个MQTT客户端;
- 接下来对MQTT客户端进行配置,主要是配置好协议端口、连接用户名密码和QoS即可;<