消息队列MQ定位为OneNET设备接入服务使用的,用于实现应用层快速、即时、可靠地获取设备消息的物联网服务组件,服务模型如下:

其中:
消息缓存
MQ服务支持消息缓存,可以有效的缓存由于网络或者应用服务器异常等原因导致的未能被即时消费的消息
队列缓存具有一定的容量上限,当队列容量达到上限后,服务将回收队列头部的数据
削峰去谷
MQ服务可以有效的缓冲前向突发的大并发量设备消息,以较低的较为平均的速率推送给消费客户端,从而减轻消费端压力
最多一次与至少一次
用户可以通过配置消息锁定时间来实现最多消费一次以及至少消费一次的消息模式,若启用消息锁定时间,在该时间内,若客户端无应答确认,则认为消费失败,锁定时间段之后,客户端可以再次消费到该未被确认的消息
消息过期时间
用户可以自定义消息过期时间,进入队列时长达到消息过期时间的消息将会被删除,即服务会删除进入队列超过一定时间的消息
自定义消费位置
支持用户自定义消费位置,例如从头部消费,从尾部消费或者从队列中某个位置消费,完成设置后,客户端将消费到来自队列中自定义位置之后的消息
只要消息没有因为超时或者缓存区已满而被删除,用户均可以通过指定消费位置重新消费到该消息
多方独立消费
服务支持用户为一个队列创建多个消费代理(sub),消费代理之间相互独立,可以分别采用不同的配置消费同一队列中的数据
单点消费与集群消费
MQ服务支持一个或者多个client同时与同一个sub(订阅 subscription)建立订阅关系
当多个client同时与同一个topic中的同一个sub建立订阅关系时,MQ服务会认为客户端处于集群消费模式,消息将被均衡的发送至每个client,且每条消息仅能够被一个客户端消费,如下图所示:
