本发明实施例涉及通信,尤其涉及基于mqtt的推送消息调度方法和系统。
背景技术:
1、酒店很多业务场景信息需要高效、精准、实时的推送给终端,如酒店的营销活动、重要的通知及酒店运维人员远程的操控指令等等,应用场景丰富且广泛。
2、推送消息应用的场景丰富且广泛,消息数量级大,因此消息内容安全尤为重要,如使用市面上的第三方推送消息产品,消息在其平台上调度无法保证数据的安全,并且费用较高。
技术实现思路
1、本发明实施例提供基于mqtt的推送消息调度方法和系统,以解决现有技术中第三方推送消息产品,消息在其平台上调度无法保证数据的安全,并且费用较高的问题。
2、第一方面,本发明实施例提供一种基于mqtt的推送消息调度方法,包括:
3、获取客户端基于mqtt的connet报文,并基于所述connet报文对所述客户端进行身份认证,若判断身份认证成功,则确认所述客户端上线,向所述客户端发送connack报文,以与所述客户端建立连接;
4、获取所述connect报文中的客户端ip,基于kafka和所述客户端ip向所述客户端推送消息,并获取所述客户端发送的publish报文。
5、作为优选的,则确认所述客户端上线后,还包括:
6、基于redis日志记录所述客户端的上线行为,生成设备上线队列;若判断所述客户端上线,则触发历史消息检测事件;
7、基于kafka和所述客户端ip向所述客户端推送消息后,基于redis日志记录推送消息行为,生成推送消息队列;
8、并获取所述客户端发送的publish报文后,基于redis日志记录客户端的消息接收行为,生成消息接收队列,其中,若收到publish报文则表示客户端已接收对应的推送消息,若未收到publish报文则表示客户端未接收对应的推送消息。
9、作为优选的,以与所述客户端建立连接后,还包括;
10、触发心跳监测,接收客户端发送的pingreq心跳报文,并向所述客户端发送pingresp心跳报文以响应所述pingreq心跳报文,触发历史消息检测事件。
11、作为优选的,则确认所述客户端上线后,还包括:
12、基于对所述客户端的心跳监测时间确定idle检测时间,对客户端进行idle检测,以判断所述客户端是否下线,并确认所述客户端是正常下线或异常下线。
13、作为优选的,对客户端进行idle检测,具体包括:
14、每隔一段时间定时进行检查,检测当前时间点客户端的数据流量与前一次时间点的数据流量的增量是否小于阈值,若小于,则认为用户下线,不小于则判断用户在正常上在线;基于redis日志记录所述客户端的下线行为,生成设备下线队列。
15、作为优选的,若未获取到客户端ip,或基于kafka和所述客户端ip向所述客户端推送消息时出现异常,则触发历史消息检测事件。
16、作为优选的,触发历史消息检测事件后,还包括:
17、检测历史推送消息队列是否空闲,所述历史推送消息队列用于记录已推送至所述客户端,但客户端未接收的历史推送消息;若空闲则匹配客户端对应的未接收的历史推送消息,并补发推送历史推送消息,记录历史消息推送行为。
18、第二方面,本发明实施例提供一种基于mqtt的推送消息调度系统,包括:
19、通信模块,获取客户端基于mqtt的connet报文,并基于所述connet报文对所述客户端进行身份认证,若判断身份认证成功,则确认所述客户端上线,向所述客户端发送connack报文,以与所述客户端建立连接;
20、推送模块,获取所述connect报文中的客户端ip,基于kafka和所述客户端ip向所述客户端推送消息,并获取所述客户端发送的publish报文。
21、第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明第一方面实施例所述基于mqtt的推送消息调度方法的步骤。
22、第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本发明第一方面实施例所述基于mqtt的推送消息调度方法的步骤。
23、本发明实施例提供的一种基于mqtt的推送消息调度方法和系统,利用kafka实现消息内部通信,监听消费kafka应用消息,仅使用mqtt协议中数据格式定义,可以兼容大部分开源mqtt客户端,只需少量改动即可使用,方便业务平台接入;准确的记录终端在线及链接情况;消息高效、准确、实时传递,客户端建立连接及心跳请求触发历史消息检测,检测历史消息队列是否空闲,如果空闲匹配该设备相关历史数据如果存在则补发历史消息,记录历史消息推送行为,完整记录消息传递状态,历史消息补发,自定义消息存活时间。
1.一种基于mqtt的推送消息调度方法,其特征在于,包括:
2.根据权利要求1所述的基于mqtt的推送消息调度方法,其特征在于,则确认所述客户端上线后,还包括:
3.根据权利要求1所述的基于mqtt的推送消息调度方法,其特征在于,以与所述客户端建立连接后,还包括;
4.根据权利要求3所述的基于mqtt的推送消息调度方法,其特征在于,则确认所述客户端上线后,还包括:
5.根据权利要求4所述的基于mqtt的推送消息调度方法,其特征在于,对客户端进行idle检测,具体包括:
6.根据权利要求1所述的基于mqtt的推送消息调度方法,其特征在于,若未获取到客户端ip,或基于kafka和所述客户端ip向所述客户端推送消息时出现异常,则触发历史消息检测事件。
7.根据权利要求2或3或6所述的基于mqtt的推送消息调度方法,其特征在于,触发历史消息检测事件后,还包括:
8.一种基于mqtt的推送消息调度系统,其特征在于,包括:
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述基于mqtt的推送消息调度方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述基于mqtt的推送消息调度方法的步骤。