掌桥专利:专业的专利平台
掌桥专利
首页

一种基于MQTT协议的消息追踪方法、装置及相关产品

文献发布时间:2024-04-18 19:58:30


一种基于MQTT协议的消息追踪方法、装置及相关产品

技术领域

本申请涉及计算机技术领域,尤其涉及一种基于MQTT协议的消息追踪方法、装置及相关产品。

背景技术

随着移动互联网、物联网的快速发展,获取信息的方式越来越多。MQTT(MessageQueuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上。MQTT的最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

相关技术中,一个消息下发流程往往需要服务端与客户端交互多次,形成多个发布消息,但是MQTT协议无法实现对多个发布消息的消息追踪。

因此,如何实现对多发布消息的消息追踪是目前亟待解决的问题。

发明内容

有鉴于此,本申请提供了一种基于MQTT协议的消息追踪方法、装置及相关产品,旨实现对多发布消息的消息追踪。

第一方面,本申请提供了一种基于MQTT协议的消息追踪方法,包括:

服务端通过MQTT协议生成第一发布消息;所述第一发布消息中至少包括第一标识和第二标识;其中,所述第一标识为客户端标识,所述第二标识为追踪标识;

所述服务端根据所述第一标识将所述第一发布消息发送到客户端;

所述服务端根据所述第二标识将所述第一发布消息和第二发布消息进行关联分析,得到消息追踪结果;所述第二发布消息为所述客户端根据所述第一发布消息通过MQTT协议生成并发送到所述服务端的,所述第二发布消息至少包括第二标识。

可选地,所述服务端生成第一发布消息,包括:

所述服务端基于第一请求消息生成第二标识;所述第一请求消息包括第一基础数据和第一用户数据;

所述服务端将所述第二标识加入所述第一请求消息中的所述第一用户数据得到所述第一发布消息;所述第一基础数据至少包括MQTT协议的固定头;所述第一用户数据用于定义用户属性。

可选地,所述服务端根据所述第二标识将所述第一发布消息和第二发布消息进行关联分析,得到消息追踪结果,包括:

所述服务端接收所述客户端发送的第二发布消息;

所述服务端对所述第二发布消息解析得到所述第二标识;

所述服务端根据所述第二标识将所述第二发布消息与所述第一发布消息进行关联分析,得到消息追踪结果。

可选地,所述服务端对所述第二发布消息解析得到所述第二标识,包括:

所述服务端对所述第二发布消息解析得到第二基础数据和第二用户数据;

所述服务端根据所述第二用户数据确定所述第二标识。

可选地,所述服务端包括推送服务端和MQTT服务器;

所述服务端通过MQTT协议生成第一发布消息包括:

所述推送服务端通过MQTT协议生成第一发布消息并存储所述第一发布消息,以及向MQTT服务器发送所述第一发布消息;

所述服务端根据所述第一标识将所述第一发布消息发送到客户端包括:

所述MQTT服务器接收所述第一发布消息;

所述MQTT服务器根据所述第一标识将所述第一发布消息发送到客户端。

可选地,所述服务端根据所述第二标识将所述第一发布消息和第二发布消息进行关联分析,得到消息追踪结果包括:

所述服务端根据所述第二标识将所述第一发布消息和第二发布消息进行关联,得到消息关联记录;

所述服务端根据所述消息关联记录进行关联分析,得到消息追踪结果。

可选地,所述消息追踪结果包括消息来源、消息目标、消息内容、消息状态、消息时延和异常数据中的一种或多种。

第二方面,本申请提供了一种基于MQTT协议的消息追踪装置,其特征在于,包括:

生成模块,用于服务端通过MQTT协议生成第一发布消息;所述第一发布消息中至少包括第一标识和第二标识;其中,所述第一标识为客户端标识,所述第二标识为追踪标识;

发送模块,用于所述服务端根据所述第一标识将所述第一发布消息发送到客户端;

关联模块,用于所述服务端根据所述第二标识将所述第一发布消息和第二发布消息进行关联分析,得到消息追踪结果;所述第二发布消息为所述客户端根据所述第一发布消息通过MQTT协议生成并发送到所述服务端的,所述第二发布消息至少包括第二标识。

第三方面,本申请提供了一种电子设备,所述设备包括:处理器、存储器、系统总线;

所述处理器以及所述存储器通过所述系统总线相连;

所述存储器用于存储一个或多个程序,所述一个或多个程序包括指令,所述指令当被所述处理器执行时使所述处理器执行上述基于MQTT协议的消息追踪方法。

第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行上述基于MQTT协议的消息追踪方法。

本申请提供了一种基于MQTT协议的消息追踪方法。在执行所述方法时,服务端通过MQTT协议生成第一发布消息;所述第一发布消息中至少包括第一标识和第二标识,其中,所述第一标识为客户端标识,所述第二标识为追踪标识;后服务端根据所述第一标识将所述第一发布消息发送到客户端,然后服务端根据所述第二标识将所述第一发布消息和第二发布消息进行关联分析,得到消息追踪结果;所述第二发布消息为所述客户端根据所述第一发布消息通过MQTT协议生成并发送到所述服务端的,所述第二发布消息至少包括第二标识。这样,通过在往来信息中加入用于追踪信息的追踪标识也就是第二标识,使得服务端可以通过第二标识将第一发布消息和第二发布消息进行关联分析,达到了追踪多发布消息的效果。如此,可以实现对多发布消息的消息追踪。

附图说明

为更清楚地说明本实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种基于MQTT协议的消息追踪方法的场景架构图;

图2为本申请实施例提供的基于MQTT协议的消息追踪方法的流程图;

图3为本申请实施例提供的第一请求消息部分数据格式示意图;

图4为本申请实施例提供的响应数据部分数据格式示意图;

图5为本申请实施例提供的一种基于MQTT协议的消息追踪装置的结构示意图。

具体实施方式

正如前文所述,作为一种低开销、低带宽占用的即时通讯协议,MQTT在物联网、小型设备和移动应用等方面有较广泛的应用。例如,在车联网场景中,MQTT能够胜任海量车机系统灵活、快速、安全接入,并保证复杂网络环境下消息实时性、可靠性。然而,在车联网业务中,一个消息下发流程往往需要服务端与客户端交互多次,形成多个发布消息。如果没有有效的消息追踪机制,就无法将这些发布消息进行有效关联,也无法实现对整个消息下发流程的全链路追踪和分析。消息追踪是指在消息采集与传递过程中,对消息的来源、目标、内容、状态等信息进行记录和分析,以实现对消息流转过程的可视化和监控。但是MQTT协议本身并不支持多发布消息的消息追踪。

有鉴于此,本申请提供了一种基于MQTT协议的消息追踪方法。在执行所述方法时,服务端通过MQTT协议生成第一发布消息;所述第一发布消息中至少包括第一标识和第二标识;其中,所述第一标识为客户端标识,所述第二标识为追踪标识,后服务端根据所述第一标识将所述第一发布消息发送到客户端,然后服务端根据所述第二标识将所述第一发布消息和第二发布消息进行关联分析,得到消息追踪结果;所述第二发布消息为所述客户端根据所述第一发布消息通过MQTT协议生成并发送到所述服务端的,所述第二发布消息至少包括第二标识。

由于往来的第一发布消息和第二发布消息中包含第二标识,也即用于追踪信息的追踪标识,使得服务端可以通过第二标识将第一发布消息和第二发布消息进行关联分析,达到了追踪多发布消息的效果。如此,可以实现对多发布消息的消息追踪。

参见图1,该图为本申请实施例提供的一种基于MQTT协议的消息追踪方法的场景架构图。如图1所示,包括服务器以及多种形式的终端设备。图1所示的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统。另外,服务器还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。其中,终端设备包括但不限于手机、平板、电脑、计算机、智能摄像头、智能语音交互设备、智能家电、车载终端、飞行器等。

为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图2为本申请实施例提供的基于MQTT协议的消息追踪方法的流程图。结合图2所示,本申请实施例提供的基于MQTT协议的消息追踪方法可以包括:

S201:服务端通过MQTT协议生成第一发布消息;所述第一发布消息中至少包括第一标识和第二标识。

MQTT协议是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布、订阅信息传输协议。可在不可靠的网络环境中进行扩展,适用于设备硬件存储空间或网络带宽有限的场景。具体地,MQTT5.0版本在协议层提供了更大的自定义扩展空间,MQTT5.0版本基于扩展点可支持更丰富的协议能力。基于此,本实施例服务端在生成第一发布消息时,将用于进行追踪的第二标识基于扩展点封装在第一发布消息中,使得后续在进行消息追踪时可以利用第二标识将所有含有相同第二标识的消息对应在一起,以便实现消息追踪。可选地,本实施例中的第二标识为键值类型的数据。可以理解的是,本实施例MQTT是用于传递消息的协议,因此必然包括消息发送的目标地址,也就是第一标识,一般而言第一标识为客户端标识,客户端可以是手机、平板、电脑、计算机、智能摄像头、智能语音交互设备、智能家电、车载终端、飞行器等中的任意一种或多种终端。

在一个可选的实施例中,所述服务端生成第一发布消息,包括:所述服务端基于第一请求消息生成第二标识;第一请求消息包括第一基础数据和第一用户数据,将第二标识加入所述第一请求消息中的第一用户数据得到第一发布消息。其中,第一基础数据至少包括MQTT协议的固定头,第一用户数据用于定义用户属性。一般而言,MQTT协议一般包括固定头和负载,其中固定头是MQTT协议中最基础的数据,存在于所有MQTT协议中,表示数据包类型及数据包的分组类标识,如连接、发布、订阅、源地址和目标地址等,在一些MQTT协议中,若想传递一定的信息,还可以利用负载进行发送传输。在可扩展的MQTT协议中,还可以包括可变头,用于用户自定义扩展属性信息等。例如,服务端需要向客户端下发一个POI信息,即兴趣点的位置和名称,相当于负载,其中客户端可以是车辆终端或手机等。图3为本申请实施例提供的第一请求消息部分数据格式示意图,结合图3所示,该请求消息部分数据可以用一个JSON格式的字符串表示,其中“lat”是Latitude的简写,表示纬度;“lng”是Longtitude的简写,表示经度;“name”是兴趣点的名称,在服务端发送这个下发请求时,会生成一个用于表示追踪标识的第二标识,例如“traceID:1234567890”,然后服务端将上述第二标识作为一个键值对加入到第一请求的第一用户数据中,例如“User Properties:traceID=1234567890”,其中“User Properties”即第一用户数据,用于定义用户属性。在本实施例中,将第二标识加入MQTT协议的用于定义用户属性的可扩展字段,在不改变MQTT协议本身的情况下,实现对多发布消息的消息追踪。

在一个可选地实施例中,对于基于MQTT协议的场景,服务端一般可以包括推送服务端和MQTT服务器,故,服务端通过MQTT协议生成第一发布消息可以包括:推送服务端通过MQTT协议生成第一发布消息并存储第一发布消息,以及向MQTT服务器发送第一发布消息。在本实施例中,推送服务端用于生成第一发布消息,并且在生成第一发布消息之后进行存储,可以理解的是,推送服务端存储的第一发布消息是包含第二标识的,推送服务端通过存储包含有第二标识的第一发布消息,以便在手续收到与第一发布消息包含同一第二标识的消息进行关联记录从而实现消息追踪。

S202:服务端根据第一标识将第一发布消息发送到客户端。

在本实施例中,在上述步骤S201中,服务端生成了携带第二标识的第一发布消息,进而服务端根据第一标识也就是客户端标识将第一发布消息发送到对应的客户端,可以理解的是,服务端在发送第一发布消息时,遵循MQTT协议的规范,包括消息格式、连接参数,QoS等级等。

在一个可选的实施例中,由于MQTT包括一套保证消息稳定传输的机制,包括消息应答、存储和重传。具体地,MQTT提供了三种不同层次QoS(Quality of Service,服务质量):QoS0,At most once,至多一次;QoS1,At least once,至少一次;QoS2,Exactly once,确保只有一次。QoS是消息的发送方和接受方之间达成的一个协议:QoS0代表发送方发送的一条消息,接受方最多能收到一次,也就是说发送方尽力向接受方发送消息,如果发送失败,则不在发送消息;QoS1代表发送方发送的一条消息,接受方至少能收到一次,也就是说发送方向接受方发送消息,如果发送失败,会继续重试,直到接受方收到消息为止,但是因为重传的原因,接受方有可能会收到重复的消息;QoS2代表发送方发送的一条消息,接受方确保能收到而且只收到一次,也就是说发送方向接受方发送消息,如果发送失败,会继续重试,直到接受方收到消息为止,同时保证接受方不会因为消息重传而收到重复的消息。

需要说明的是,上述消息在发送的过程中可能存在多次传输的情况,可以理解的是,每次发送消息的过程中均携带有第二标识,因此可以通过第二标识确定每次异常、重传和超时等具体的情况。在本实施例中,服务端就是发送方,客户端就是接受方,但是在具体的应用场景中,服务端和客户端均既可以作为发送方也可以作为接受方,也就是说,所谓发送方和接受方针对执行发送消息的主体而言是相对的,并不限制具体的执行主体。

在一个可选的实施例中,上述步骤S201中记载了服务端了可以包括推送服务端和MQTT服务器,推送服务端向MQTT服务器发送所述第一发布消息,基于此,上述步骤S202可以包括:MQTT服务器接收第一发布消息;MQTT服务器根据第一标识将第一发布消息发送到客户端。在本实施例中,MQTT服务器咱接收第一发布消息之后,可以根据第一发布消息的内容对第一消息进行多次和多终端转发,而不需要再经过推送服务端,从而实现消息的快速和安全分发。

S203:服务端根据第二标识将第一发布消息和第二发布消息进行关联分析,得到消息追踪结果;所述第二发布消息为客户端根据第一发布消息通过MQTT协议生成并发送到服务端的,第二发布消息至少包括第二标识。

在本实施例中,服务端将第一发布消息发送到客户端之后,客户端会根据第一发布消息进行响应,通过MQTT协议生成第二发布消息并发送到服务端。具体地,客户端接收第一发布消息,解析得到第一基础数据和第一用户数据,其中,第一用户数据包括第二标识,将第二标识保存在客户端中,同时根据第一基础数据执行对应的操作并生成第二响应数据,然后利用第二标识和第二响应消息生成第二发布消息发送到客户端。

接上述步骤S201中服务端需要向客户端下发一个POI信息的举例,假设客户端是一个车辆终端,该车辆终端收到了服务端向车辆终端下发一个POI 信息,并解析出了POI的信息和第一用户数据中的第二标识“traceID:1234567890”,并保存第二标识,车辆终端根据POI的信息,在车辆终端上显示出了兴趣点的位置和名称,并生成了响应数据,表示已经成功接收和处理了POI的信息。图4为本申请实施例提供的响应数据部分数据格式示意图,结合图4所示,该响应数据部分数据可以用一个JSON格式的字符串表示,其中“status”表示状态,一般可以包括“success(成功)”或“failure(失败)”等,“message”表示消息,例如POI消息已被接收等。客户端在发送上述响应消息时,会将之前保存的第二标识“traceID:1234567890”作为键值对加入响应消息的第二用户数据中,如“User Properties:traceID=1234567890”,最终生成第二发布消息,客户端将第二发布消息发送给服务端。在本实施例中,由于不改变MQTT协议本身,利用用户属性这一扩展机制。避免了对MQTT协议的修改或定制,保持了MQTT协议的简单易实现、支持QoS、报文小等特点,兼容了市场上大量成熟的软件库与硬件模组。

由于客户端返回到服务端的第二发布消息携带了第二标识,因此服务端在接收到对应的第二发布消息之后,通过第一发布消息和第二发布消息中共同携带的第二标识可以将第一发布消息和第二发布消息进行关联分析,得到消息追踪结果。

在一个可选的实施例中,上述步骤S203服务端根据第二标识将所述第一发布消息和第二发布消息进行关联分析,得到消息追踪结果,可以包括:服务端接收客户端发送的第二发布消息;服务端对第二发布消息解析得到第二标识;服务端根据第二标识将所述第二发布消息与所述第一发布消息进行关联分析,得到消息追踪结果。在本实施例中,当客户端将第二发布消息发送到服务端时,服务端接收客户端发送的第二发布消息,然后对客户端发送的第二发布消息进行解析,由于第二发布消息中包含第二标识,通过解析第二发布消息,可以得到第二发布消息中的第二标识,进而根据从第二发布消息中解析得到的第二标识将第二发布消息和第一发布消息关联,然后进行关联分析,得到消息追踪结果。其中,由于第二标识封装在第二发布消息中的第二用户数据中,因此在服务端对第二发布消息解析得到第二标识,具体为:服务端对第二发布消息解析得到第二基础数据和第二用户数据;服务端根据第二用户数据确定第二标识。

在一个可选的实施例中,当服务端根据第二标识确定相互关联的第一发布消息和第二发布消息时,服务端可以根据第二标识将第一发布消息和第二发布消息做消息关联记录,进而通过分析消息关联记录得到消息追踪结果。故,上述步骤S203可以包括:服务端根据第二标识将第一发布消息和第二发布消息进行关联,得到消息关联记录;服务端根据消息关联记录进行关联分析,得到消息追踪结果。接上述服务端向客户端下发一个POI信息的举例,服务端在接收到客户端的第二发布消息之后,可以记录“Request:POI informationwith traceID=1234567890sent to car A;Response:success message with traceID=1234567890received from car A”,将同时携带“traceID=1234567890”这一第二标识的第一发布消息(请求消息)和第二发布消息(响应消息)关联并记录对应的信息,从而得到消息关联记录,然后再通过分析消息关联记录得到消息追踪记录,可以包括(1)消息来源是服务端,消息目标是车辆A;(2)消息内容是POI的信息,包括位置和名称;(3)消息状态是成功,表示车辆A已经接收和处理了POI的信息;(4)消息时延,表示从服务端发送到车辆A接收的时间;(5)异常数据,即消息是否有异常或错误,例如丢包、重传、超时等。在本实施例中,通过对消息关联记录的分析,最终是实现了多发布消息的全链路追踪和分析,并且通过对消息关联记录可以实现多组多发布数据的同时或者延时分析,从而实现合理调配服务端资源,提高问题反馈的效率。

在一个可选的实施例中,所述方法还包括对所述消息追踪结果进行可视化展示,以便用户能够定位和解决问题,评估和优化业务逻辑,收集和利用数据,提升用户体验。

在上述实施例中,通过在往来信息中加入用于追踪信息的追踪标识也就是第二标识,使得服务端可以通过第二标识将第一发布消息和第二发布消息进行关联分析,达到了追踪多发布消息的效果。如此,可以实现对多发布消息的消息追踪,方便定位和解决消息传输过程中问题,有利于评估和优化业务逻辑。

以上为本申请实施例提供方法的一些具体实现方式,基于此,本申请还提供了对应的装置。下面将从功能模块化的角度对本申请实施例提供的装置进行介绍。

图5为本申请实施例提供的一种基于MQTT协议的消息追踪装置的结构示意图。结合图5所示的装置500的结构示意图,该装置500包括生成模块501、发送模块502和关联模块503。

生成模块501,用于服务端通过MQTT协议生成第一发布消息;所述第一发布消息中至少包括第一标识和第二标识;其中,所述第一标识为客户端标识,所述第二标识为追踪标识;

发送模块502,用于所述服务端根据所述第一标识将所述第一发布消息发送到客户端;

关联模块503,用于所述服务端根据所述第二标识将所述第一发布消息和第二发布消息进行关联分析,得到消息追踪结果;所述第二发布消息为所述客户端根据所述第一发布消息通过MQTT协议生成并发送到所述服务端的,所述第二发布消息至少包括第二标识。

所述生成模块501具体包括:

生成单元,用于所述服务端基于第一请求消息生成第二标识;所述第一请求消息包括第一基础数据和第一用户数据;

第一获得单元,用于所述服务端将所述第二标识加入所述第一请求消息中的所述第一用户数据得到所述第一发布消息;所述第一基础数据至少包括MQTT协议的固定头;所述第一用户数据用于定义用户属性。

所述关联模块503具体包括:

接收单元,用于所述服务端接收所述客户端发送的第二发布消息;

解析单元,用于所述服务端对所述第二发布消息解析得到所述第二标识;

关联分析单元,用于所述服务端根据所述第二标识将所述第二发布消息与所述第一发布消息进行关联分析,得到消息追踪结果。

所述解析单元,具体用于:

所述服务端对所述第二发布消息解析得到第二基础数据和第二用户数据;

所述服务端根据所述第二用户数据确定所述第二标识。

所述关联模块503具体包括:

关联单元,用于所述服务端根据所述第二标识将所述第一发布消息和第二发布消息进行关联,得到消息关联记录;

分析单元,用于所述服务端根据所述消息关联记录进行关联分析,得到消息追踪结果。

本申请实施例还提供了对应的设备以及计算机存储介质,用于实现本申请实施例提供的方案。

其中,所述设备包括存储器和处理器,所述存储器用于存储指令或代码,所述处理器用于执行所述指令或代码,以使所述设备执行本申请任一实施例所述的基于MQTT协议的消息追踪方法。

所述计算机存储介质中存储有代码,当所述代码被运行时,运行所述代码的设备实现本申请任一实施例所述的基于MQTT协议的消息追踪方法。

本申请实施例中提到的“第一”、“第二”(若存在)等名称中的“第一”、“第二”只是用来做名字标识,并不代表顺序上的第一、第二。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储器(英文:read-onlymemory,ROM)/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如路由器等网络通信设备)执行本申请各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本申请示例性的实施方式,并非用于限定本申请的保护范围。

相关技术
  • 一种基于智能推荐的消息推送方法、装置及终端设备
  • 一种基于短信的带格式多媒体内容消息下发接收方法及装置
  • 一种基于声呐的海洋鱼群追踪装置及其使用方法
  • 一种基于MQTT协议的消息收发方法及装置
  • 基于MQTT协议的消息处理方法、装置和计算机设备
技术分类

06120116496039