现如今扫码付款和收款已经很便利了,比如超市买完东西付款时有两种方式 : 顾客可以出示付款码给收银员扫码收款,也可以由顾客扫描超市的收款码进行付款 。两种方式在付款完成后超市端会进行语音播报收到xx元。 前者收银员主动扫码,其使用的系统可以实时地收到付款反馈信息然后进行语音播报。后者顾客扫码付款则没有这么简单了,因为发起付款请求的是顾客端,收银端系统是不能实时地知道“我的二维码何时被扫了“,也就是说付款成功通知得由服务器推送过来,这里就涉及到了消息推送技术。
MQTT简介
MQTT (MQ Telemetry Transport)is a machine-to-machine (M2M)/“Internet of Things” connectivity protocol.
MQTT stands for MQ Telemetry Transport. It is a publish/subscribe, extremely simple and lightweight messaging protocol, designed for constrained devices and low-bandwidth, high-latency or unreliable networks. The design principles are to minimise network bandwidth and device resource requirements whilst also attempting to ensure reliability and some degree of assurance of delivery. These principles also turn out to make the protocol ideal of the emerging “machine-to-machine” (M2M) or “Internet of Things” world of connected devices, and for mobile applications where bandwidth and battery power are at a premium.
MQTT即MQ遥测传输协议,它是一个发布/订阅协议,非常简单和轻量级的消息传递协议,专为受限设备和低带宽、高延迟或不可靠的网络设计。设计原则是尽量减少网络带宽和设备资源需求,同时也试图确保可靠性和一定程度的交付保证。这些原则也使协议成为新兴的“机器对机器”(M2M)或“物联网”世界的理想连接设备,以及带宽和电池电力的移动应用程序。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。特性如下:
1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
2、对负载内容屏蔽的消息传输;
3、使用 TCP/IP 提供网络连接;
4、有三种消息发布服务质量:
- qos为0: “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
- qos为1:“至少一次”,确保消息到达,但消息重复可能会发生。
- qos为2:“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。
MQTT官网
Android消息推送MQTT实战
MQTT Broker(代理服务器)
有很多开源的MQTT Broker代理服务器,参考MQTT Broker 选型进行Broker选型,下面简单介绍使用Mosquitto Broker。