消息转发方法及服务端与流程

专利2022-06-30  48


本发明涉及计算机技术领域,特别涉及消息转发方法及服务端。



背景技术:

在互联网蓬勃发展的今天,当系统需要向其对应的各个用户端发送实时消息时,可以调用不同的消息推送工具对需要发送的实时消息进行转发,以送达各个用户终端。

目前网络系统中消息转发一般采用客户端、服务端订阅的模式。首先由客户端进行消息筛选条件配置,服务端对实时消息进行权限筛选条件匹配后,直接转发给客户端,由客户端再进行消息筛选条件匹配,符合条件的实时消息在相应的窗口内呈现。

通过上述描述可见,客户端需要对服务端推送的大量实时消息进行匹配,当服务端推送的实时消息过多时,会导致客户端网络负荷过大。



技术实现要素:

本发明实施例提供了消息转发方法及服务端,可以解决客户端网络负荷过大的问题。

第一方面,本发明实施例提供了消息转发方法,应用于服务端,预先设置至少一个用户权限字段名,其中,所述用户权限字段名对应字段为客户端能够访问的信息,包括:

a0:获取至少一条实时消息;

a1:获取至少一个客户端发送的至少一个用户操作字段名,其中,所述用户操作字段名对应的字段为客户端需要访问的信息;

a2:根据所述至少一个用户权限字段名和所述至少一个客户端发送的所述至少一个用户操作字段名,生成每一个所述客户端对应的用户消息匹配条件;

a3:确定所述至少一条实时消息中,是否存在与各个所述用户消息匹配条件中的至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息;

a4:当存在与至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息时,将每一个所述目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,以使所述目标客户端输出接收到的所述至少一条用户筛选消息。

优选地,

在所述预先设置至少一个用户权限字段名之后,在所述a1之前,进一步包括:

将所述至少一个用户权限字段名发送给至少一个客户端,以使用户从所述客户端接收到的所述至少一个用户权限字段名中确定至少一个用户操作字段名。

优选地,

所述a2,包括:

针对每一个所述客户端,当所述至少一个用户权限字段名中包含所述客户端发送的所述至少一个用户操作字段名时,将所述客户端发送的所述至少一个用户操作字段名作为所述客户端对应的用户消息匹配条件。

优选地,

在所述a2之前,进一步包括:

获取每一个所述客户端发送的用于指示客户端身份的窗口id;

创建每一个所述窗口id对应的消息转发队列;

当存在与至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息时,在所述将每一个所述目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端之前,进一步包括:

针对每一个所述目标用户消息匹配条件执行:

确定与所述目标用户消息匹配条件相对应的目标客户端,其中,所述目标客户端为发来生成所述目标用户消息匹配条件时的所述用户操作字段名的客户端;

从创建的各个所述消息转发队列中,确定与所述目标客户端的窗口id相对应的目标消息转发队列;

按照时间顺序,将所述目标用户消息匹配条件相对应的至少一条用户筛选消息推送到所述目标消息转发队列中;

所述将每一个所述目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,包括:

通过所述目标消息转发队列向所述目标客户端发送每一条所述用户筛选消息。

优选地,

在所述a0之后,在所述a3之前,进一步包括:

s1:创建kafka消息队列;

s2:按照时间顺序,将所述至少一条实时消息推送至所述kafka消息队列中;

所述a4,包括:

s3:读取所述kafka消息队列中的第一条实时消息;

s4:确定各个所述用户消息匹配条件中是否存在与所述第一条实时消息相对应的至少一个目标用户消息匹配条件,其中,所述目标用户消息匹配条件包括第一条实时消息中的字段对应的字段名,如果是,执行s5,否则,执行s6;

s5:将所述第一条实时消息作为用户筛选消息,将每一个所述目标用户消息匹配条件对应的用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,并执行s6;

s6:将所述kafka消息队列中所述第一条实时消息的下一条实时消息作为第一条实时消息,返回s4。

第二方面,本发明提供了服务端,包括:

系统条件设置模块,用于预先设置至少一个用户权限字段名,其中,所述用户权限字段名对应字段为客户端能够访问的信息;

实时消息获取模块,用于获取至少一条实时消息;

客户端信息获取模块,用于获取至少一个客户端发送的至少一个用户操作字段名,其中,所述用户操作字段名对应的字段为客户端需要访问的信息;

筛选条件设置模块,用于根据所述系统条件设置模块设置的所述至少一个用户权限字段名和所述客户端信息获取模块获取的所述至少一个客户端发送的所述至少一个用户操作字段名,生成每一个所述客户端对应的用户消息匹配条件;

筛选模块,用于确定所述实时消息获取模块获取的所述至少一条实时消息中,是否存在与所述筛选条件设置模块生成的各个所述用户消息匹配条件中的至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息;

实时消息转发模块,用于当存在所述筛选模块确定的至少一条用户筛选消息时,将每一个所述目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,以使所述目标客户端输出接收到的所述至少一条用户筛选消息。

优选地,

所述实时消息转发模块,进一步用于将所述系统条件设置模块设置的所述至少一个用户权限字段名发送给至少一个客户端,以使用户从所述客户端接收到的所述至少一个用户权限字段名中确定至少一个用户操作字段名。

优选地,

所述筛选条件设置模块,用于针对每一个所述客户端,当所述至少一个用户权限字段名中包含所述客户端发送的所述至少一个用户操作字段名时,将所述客户端发送的所述至少一个用户操作字段名作为所述客户端对应的用户消息匹配条件。

优选地,

所述服务端进一步包括:创建模块、客户端确定模块、消息队列确定模块和推送模块;

所述创建模块,用于获取每一个所述客户端发送的用于指示客户端身份的窗口id;创建每一个所述窗口id对应的消息转发队列;

所述客户端确定模块,用于确定与所述筛选模块确定的所述目标用户消息匹配条件相对应的目标客户端,其中,所述目标客户端为发来生成所述目标用户消息匹配条件时的所述用户操作字段名的客户端;

所述消息队列确定模块,用于从所述创建模块创建的各个所述消息转发队列中,确定与所述客户端确定模块确定的所述目标客户端的窗口id相对应的目标消息转发队列;

所述推送模块,用于按照时间顺序,将所述筛选模块确定的至少一条用户筛选消息推送到所述消息队列确定模块确定的所述目标消息转发队列中;

所述实时消息转发模块,用于通过所述消息队列确定模块确定的所述目标消息转发队列向所述目标客户端发送每一条所述用户筛选消息。

优选地,

进一步包括:处理模块;

所述处理模块,用于执行:

s1:创建kafka消息队列;

s2:按照时间顺序,将所述至少一条实时消息推送至所述kafka消息队列中;

所述实时消息转发模块,用于执行:

s3:读取所述处理模块创建的所述kafka消息队列中的第一条实时消息;

s4:确定各个所述用户消息匹配条件中是否存在与所述第一条实时消息相对应的至少一个目标用户消息匹配条件,其中,所述目标用户消息匹配条件包括第一条实时消息中的字段对应的字段名,如果是,执行s5,否则,执行s6;

s5:将所述第一条实时消息作为用户筛选消息,将每一个所述目标用户消息匹配条件对应的用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,并执行s6;

s6:将所述kafka消息队列中所述第一条实时消息的下一条实时消息作为第一条实时消息,返回s4。

本发明提供了消息转发方法及服务端,用户操作字段名是各个客户端需要访问的信息对应的字段名,将服务端预先设置的用户权限字段名和各个客户端发来的用户操作字段名设置为各个客户端的用户消息匹配条件,通过各个客户端的用户消息匹配条件对实时消息进行筛选,筛选出来的实时消息就是各个客户端能够访问且需要访问的实时消息,即用户筛选消息,同时根据发来生成目标用户消息匹配条件的用户操作字段名可以确定对应的各个客户端,将用户筛选消息发送给相对应的各个客户端即可实现实时消息的转发。通过上述方式,不需要在客户端进行大量实时消息的筛选,从而避免客户端的网络负荷过大。

附图说明

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

图1是本发明一实施例提供的一种消息转发方法的流程图;

图2是本发明另一实施例提供的一种消息转发方法的流程图;

图3是本发明一实施例提供的一种服务端的结构示意图;

图4是本发明另一实施例提供的一种服务端的结构示意图。

具体实施方式

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

如图1所示,本发明实施例提供了消息转发方法,应用于服务端,该方法可以包括以下步骤:

步骤101:预先设置至少一个用户权限字段名,其中,用户权限字段名对应字段为客户端能够访问的信息;

步骤102:获取至少一条实时消息;

步骤103:获取至少一个客户端发送的至少一个用户操作字段名,其中,用户操作字段名对应的字段为客户端需要访问的信息;

步骤104:根据至少一个用户权限字段名和至少一个客户端发送的至少一个用户操作字段名,生成每一个客户端对应的用户消息匹配条件;

步骤105:确定至少一条实时消息中,是否存在与各个用户消息匹配条件中的至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息;

步骤106:当存在与至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息时,将每一个目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来目标用户消息匹配条件的目标客户端,以使目标客户端输出接收到的至少一条用户筛选消息。

在本发明实施例中,用户操作字段名是各个客户端需要访问的信息对应的字段名,将服务端预先设置的用户权限字段名和各个客户端发来的用户操作字段名设置为各个客户端的用户消息匹配条件,通过各个客户端的用户消息匹配条件对实时消息进行筛选,筛选出来的实时消息就是各个客户端能够访问且需要访问的实时消息,即用户筛选消息,同时根据发来生成目标用户消息匹配条件的用户操作字段名可以确定对应的各个客户端,将用户筛选消息发送给相对应的各个客户端即可实现实时消息的转发。通过上述方式,不需要在客户端进行大量实时消息的筛选,从而避免客户端的网络负荷过大。

为了便于筛选用户所要访问的实时消息,在本发明一实施例中,在所述预先设置至少一个用户权限字段名之后,在所述获取至少一个客户端发送的至少一个用户操作字段名之前,进一步包括:

将所述至少一个用户权限字段名发送给至少一个客户端,以使用户从所述客户端接收到的所述至少一个用户权限字段名中确定至少一个用户操作字段名。

在本发明实施例中,用户权限字段名是各个客户端能够访问的信息,将用户权限字段名发送给各个客户端,各个客户端可以在用户权限字段名中进行选择,确定出自己需要访问的信息对应的字段名,即各个客户端的用户操作字段名。

为了确定用户消息匹配条件以对实时消息进行筛选,在本发明一实施例中,所述a2,包括:

针对每一个所述客户端,当所述至少一个用户权限字段名中包含所述客户端发送的所述至少一个用户操作字段名时,将所述客户端发送的所述至少一个用户操作字段名作为所述客户端对应的用户消息匹配条件。

在本发明实施例中,由于用户权限字段名是系统预先设置的各个客户端能够访问的信息对应的字段名,而用户操作字段名是每一个客户端针对自己的需求自己设置的,当各个用户权限字段名中包含各个客户端的用户操作字段名时,通过该用户操作字段名对实时消息进行筛选,筛选后的实时消息即为各个客户端能够访问且需要访问的实时消息,故可将客户端发送的用户操作字段名作为各个客户端对应的用户消息匹配条件。

为了将筛选出的用户筛选消息转发给各个客户端,在本发明一实施例中,在所述根据所述至少一个用户权限字段名和所述至少一个客户端发送的所述至少一个用户操作字段名,生成每一个所述客户端对应的用户消息匹配条件之前,进一步包括:

获取每一个所述客户端发送的用于指示客户端身份的窗口id;

创建每一个所述窗口id对应的消息转发队列;

当存在与至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息时,在所述将每一个所述目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端之前,进一步包括:

针对每一个所述目标用户消息匹配条件执行:

确定与所述目标用户消息匹配条件相对应的目标客户端,其中,所述目标客户端为发来生成所述目标用户消息匹配条件时的所述用户操作字段名的客户端;

从创建的各个所述消息转发队列中,确定与所述目标客户端的窗口id相对应的目标消息转发队列;

按照时间顺序,将所述目标用户消息匹配条件相对应的至少一条用户筛选消息推送到所述目标消息转发队列中;

所述将每一个所述目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,包括:

通过所述目标消息转发队列向所述目标客户端发送每一条所述用户筛选消息。

在本发明实施例中,当存在与各个客户端的用户消息匹配条件相匹配的用户筛选消息时,需要根据发来生成各个用户消息匹配条件的用户操作字段名确定对应的客户端,以便将筛选出的用户筛选消息推送至对应的客户端,同时通过获取各个客户端对应的窗口id,可将实时消息呈现给对应的窗口id,以便用户可以及时查看实时消息;同时创建消息转发队列,基于消息队列本身的特性,可以将用户筛选消息按照时间顺序推送至消息转发队列中,并按照时间顺序从消息转发队列中提取实时消息,可以提高客户端系统的稳定性,避免客户端的网络负荷过大。

网管系统实时消息窗口进行实时消息订阅,设置好用户消息匹配条件之后,实时消息窗口与用户消息匹配条件进行绑定。实时消息窗口绑定用户消息匹配条件后,客户端调用注册服务进行窗口实时消息订阅。

注册服务首先获取该窗口所属用户的权限信息,将权限信息映射为用户权限字段名。然后结合窗口的筛选条件,组织为以窗口id为标记的用户消息匹配条件。注册服务再调用消息队列管理服务为实时消息窗口创建实时消息接收的消息转发队列,消息转发队列与用户消息匹配条件进行绑定,符合用户消息匹配条件的实时消息会被推送至该消息转发队列中。如果实时消息窗口已经有消息队列,则不会创建新的消息队列。

在组织实时消息筛选的过程中,为提高筛选的效率,可以基于规则引擎进行用户消息匹配条件服务封装。首先由规则加载内存同步服务读取所有的用户消息匹配条件,并且按照规则引擎的格式将用户消息匹配条件批量加载到内存数据库中,以窗口id作为用户消息匹配条件的主键。

为了对实时消息进行转发,在本发明一实施例中,在所述获取至少一条实时消息之后,在所述确定所述至少一条实时消息中,是否存在与各个所述用户消息匹配条件中的至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息之前,进一步包括:

s1:创建kafka消息队列;

s2:按照时间顺序,将所述至少一条实时消息推送至所述kafka消息队列中;

所述当存在与至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息时,将每一个所述目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,以使所述目标客户端输出接收到的所述至少一条用户筛选消息,包括:

s3:读取所述kafka消息队列中的第一条实时消息;

s4:确定各个所述用户消息匹配条件中是否存在与所述第一条实时消息相对应的至少一个目标用户消息匹配条件,其中,所述目标用户消息匹配条件包括第一条实时消息中的字段对应的字段名,如果是,执行s5,否则,执行s6;

s5:将所述第一条实时消息作为用户筛选消息,将每一个所述目标用户消息匹配条件对应的用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,并执行s6;

s6:将所述kafka消息队列中所述第一条实时消息的下一条实时消息作为第一条实时消息,返回s4。

在本发明实施例中,由于kafka消息队列是一个具有高吞吐量的消息队列,基于kafka消息队列本身的特性,可将获取到的实时消息按照时间的先后推送至kafka消息队列中,再按照时间的先后依次读取kafka消息队列中的每一条实时消息,并确定与每一条实时消息相匹配的用户消息匹配条件,通过各个客户端对应的用户消息匹配条件对kafka消息队列中读取的实时消息进行筛选,将筛选后的实时消息作为用户筛选消息通过消息转发队列发送给相应的各个窗口id。

基于用户消息匹配条件对实时消息进行转发,通过将客户端设置的用户操作字段名和系统预先设置的用户权限字段名结合在一起生成用户消息匹配条件,比如,可以加载到规则引擎中,并封装为规则匹配服务。消息转发时调用规则匹配服务进行规则匹配,可以灵活扩展规则匹配通用服务,充分发挥服务端的计算能力,极大提高了规则匹配的效率,有效解决了海量实时消息转发时进行规则匹配的处理瓶颈问题。

本方案针对目前实时消息转发的问题,将客户端的用户操作字段名匹配在服务端实现,服务端将用户操作字段名和用户权限字段名统一起来,利用规则引擎实现高效率的规则匹配,并封装为可灵活扩展的通用规则匹配服务,解决了海量实时消息转发时规则匹配的处理瓶颈问题。

如图2所示,为了更清楚地说明本发明的技术方案及优点,以实时消息a、b和c为例,对本发明提供了消息转发方法进行详细说明,该方法具体可以包括以下步骤:

步骤201:预先设置至少一个用户权限字段名。

步骤202:将至少一个用户权限字段名发送给至少一个客户端,以使用户从客户端接收到的至少一个用户权限字段名中确定至少一个用户操作字段名。

具体来说,用户权限字段名为各个客户端能够访问的实时消息对应的字段名,各个客户端需要从各个用户权限字段名中确定出自己需要访问的实时消息对应的字段名,即各个用户操作字段名。

举例来说,假设系统发给用户张明的用户权限字段名为服务端、告警和故障,则张明可以访问字段名为服务端、告警和故障对应的实时消息,同时张明可以选择服务端、告警和故障中至少一个作为自己的用户操作字段名。

步骤203:获取每一个客户端发送的用于指示客户端身份的窗口id。

步骤204:创建每一个窗口id对应的消息转发队列。

具体来说,由于每一个窗口id都可以指示客户端的身份,故可以创建每一个窗口id对应的消息转发队列,通过窗口id确定需要转发的实时消息对应的客户端,并将实时消息a、b和c按照时间顺序推送至消息转发队列中,提取消息转发队列中的实时消息a、b和c发送给对应的窗口id。

举例来说,假设窗口id1对应的用户为张明,窗口id2对应的用户为王红,则将实时消息推送至窗口id1的客户端即为将实时消息推送给用户张明,将实时消息推送至id2的客户端即为将实时消息推送给用户王红,通过窗口id可以准确地将实时消息发送给对应的用户。

步骤205:获取实时消息a、b和c。

步骤206:创建kafka消息队列。

步骤207:按照时间顺序,将实时消息a、b和c推送至kafka消息队列中。

步骤208:获取至少一个客户端发送的至少一个用户操作字段名。

其中,用户操作字段名对应的字段为客户端需要访问的信息。

举例来说,用户张明的用户操作字段名可以为服务端和告警,用户王红的用户操作字段名可以为服务端和故障。

步骤209:针对每一个客户端,当至少一个用户权限字段名中包含客户端发送的至少一个用户操作字段名时,将客户端发送的至少一个用户操作字段名作为客户端对应的用户消息匹配条件。

具体来说,各个客户端发给服务端的用户操作字段名是各个客户端能够访问并且需要访问的信息,故用各个客户端的用户操作字段名作为用户消息匹配条件,通过各个客户端的用户消息匹配条件对实时消息进行筛选。

举例来说,假设用户张明的用户操作字段名为服务端和告警,用户张明将自己的用户操作字段名发送给服务端,服务端设置张明的用户消息匹配条件为服务端和告警,则经过张明的用户消息匹配条件筛选之后的实时消息是包含服务端和告警对应字段的实时消息,例如,服务端cpu使用率超过90%。

步骤210:读取kafka消息队列中的第一条实时消息。

具体来说,由于kafka消息队列是一个高吞吐量的消息队列,基于消息队列本身的特性,故先将大量实时消息按照时间的先后顺序推送至kafka消息队列中,可以慢慢提取消息队列中的实时消息,提高系统稳定性。

步骤211:确定各个用户消息匹配条件中是否存在与第一条实时消息相对应的至少一个目标用户消息匹配条件,如果是,执行步骤212,否则,结束当前流程。

其中,目标用户消息匹配条件包括第一条实时消息中的字段对应的字段名。

步骤212:确定与目标用户消息匹配条件相对应的目标客户端。其中,目标客户端为发来生成目标用户消息匹配条件时的用户操作字段名的客户端。

步骤213:从创建的各个消息转发队列中,确定与目标客户端的窗口id相对应的目标消息转发队列。

步骤214:将第一条实时消息作为用户筛选消息,将每一个目标用户消息匹配条件对应的用户筛选消息,发送给发来目标用户消息匹配条件的目标客户端,并执行步骤215。

步骤215:将kafka消息队列中第一条实时消息的下一条实时消息作为第一条实时消息,返回步骤211。

步骤216:按照时间顺序,将目标用户消息匹配条件相对应的至少一条用户筛选消息推送到目标消息转发队列中。

具体来说,消息读取服务负责从kafka消息队列中读取实时消息,然后调用用户消息匹配条件进行筛选,每一条实时消息都获取订阅该实时消息的所有窗口列表,再通过消息分发服务把筛选后的实时消息按照窗口列表,推送至对应的消息队列。

步骤217:通过目标消息转发队列向目标客户端发送每一条用户筛选消息,以使目标客户端输出接收到的至少一条用户筛选消息。

具体来说,由于kafka消息队列中的实时消息是按照时间的先后顺序推送的,故读取kafka消息队列中的第一条实时消息即为最先推送至kafka消息队列中的实时消息(例如,实时消息a)。从kafka消息队列提取出来的实时消息需要先经过每一个用户消息匹配条件的筛选之后才能推送至各个客户端,但是由于推送至kafka消息队列中的实时消息有时间的先后顺序,所以需要按照时间的先后顺序提取之后使用各个客户端的用户消息匹配条件进行筛选。筛选出来的用户筛选消息要推送至每一个对应的客户端,故需要确定目标客户端,而目标客户端与发来生成目标用户消息匹配条件时的用户操作字段名相对应,故可以根据每一个用户操作字段名确定对应的客户端。经过每一个用户消息匹配条件筛选之后得到的就是用户筛选消息,由于消息队列本身的特性,故可以将用户筛选消息推送至消息转发队列中,再慢慢提取消息转发队列中的用户筛选消息,并发送给每一个消息转发队列对应的客户端。

举例来说,假设从kafka读取的第一条实时消息为实时消息a,将实时消息a与每一个客户端的用户消息匹配条件进行匹配,如果存在用户消息匹配条件对应的字段名包含实时消息a对应的字段,则此实时消息可以作为用户筛选消息推送至对应的消息转发队列中,并提取此消息转发队列中的用户筛选消息推送至对应的客户端即可。

客户端进行实时消息窗口注册后,通过websocket接收服务端从消息转发队列推送的实时消息。客户端通过固定的时间间隔,从订阅的消息转发队列中拉取实时消息,并对实时消息进行展示。如果因为网络断链或者其他故障,客户端会尝试进行自动重连,直到正常完成注册并接受实时消息。

本发明通过在服务端使用用户操作字段名优化实时消息筛选速度,大幅提高了消息转发的速度,有效解决了海量实时消息转发时进行筛选的处理瓶颈问题,为网管系统实时监控提供稳定的消息转发能力。

如图3所示,本发明实施例提供了服务端,包括:

系统条件设置模块301,用于预先设置至少一个用户权限字段名,其中,所述用户权限字段名对应字段为客户端能够访问的信息;

实时消息获取模块302,用于获取至少一条实时消息;

客户端信息获取模块303,用于获取至少一个客户端发送的至少一个用户操作字段名,其中,所述用户操作字段名对应的字段为客户端需要访问的信息;

筛选条件设置模块304,用于根据所述系统条件设置模块301设置的所述至少一个用户权限字段名和所述客户端信息获取模块303获取的所述至少一个客户端发送的所述至少一个用户操作字段名,生成每一个所述客户端对应的用户消息匹配条件;

筛选模块305,用于确定所述实时消息获取模块302获取的所述至少一条实时消息中,是否存在与所述筛选条件设置模块304生成的各个所述用户消息匹配条件中的至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息;

实时消息转发模块306,用于当存在所述筛选模块305确定的至少一条用户筛选消息时,将每一个所述目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,以使所述目标客户端输出接收到的所述至少一条用户筛选消息。

在本发明实施例中,客户端信息获取模块可以获取用户操作字段名是各个客户端需要访问的信息对应的字段名,筛选条件设置模块可以将系统条件设置模块预先设置的用户权限字段名和客户端信息获取模块获取的各个客户端发来的用户操作字段名设置为各个客户端的用户消息匹配条件,筛选模块通过各个客户端的用户消息匹配条件对实时消息进行筛选,筛选出来的实时消息就是各个客户端能够访问且需要访问的实时消息,即用户筛选消息,实时消息转发模块再根据发来生成目标用户消息匹配条件的用户操作字段名可以确定对应的各个客户端,将用户筛选消息发送给相对应的各个客户端即可实现实时消息的转发。通过上述方式,不需要在客户端进行大量实时消息的筛选,从而避免客户端的网络负荷过大。

在本发明一实施例中,所述实时消息转发模块,进一步用于将所述系统条件设置模块设置的所述至少一个用户权限字段名发送给至少一个客户端,以使用户从所述客户端接收到的所述至少一个用户权限字段名中确定至少一个用户操作字段名。

在本发明一实施例中,所述筛选条件设置模块,用于针对每一个所述客户端,当所述至少一个用户权限字段名中包含所述客户端发送的所述至少一个用户操作字段名时,将所述客户端发送的所述至少一个用户操作字段名作为所述客户端对应的用户消息匹配条件。

在本发明一实施例中,如图4所示,所述服务端进一步包括:创建模块401、客户端确定模块402、消息队列确定模块403和推送模块404;

所述创建模块401,用于获取每一个所述客户端发送的用于指示客户端身份的窗口id;创建每一个所述窗口id对应的消息转发队列;

所述客户端确定模块402,用于确定与所述筛选模块305确定的所述目标用户消息匹配条件相对应的目标客户端,其中,所述目标客户端为发来生成所述目标用户消息匹配条件时的所述用户操作字段名的客户端;

所述消息队列确定模块403,用于从所述创建模块401创建的各个所述消息转发队列中,确定与所述客户端确定模块402确定所述目标客户端的窗口id相对应的目标消息转发队列;

所述推送模块404,用于按照时间顺序,将所述筛选模块305确定的至少一条用户筛选消息推送到所述消息队列确定模块403确定的所述目标消息转发队列中;

所述实时消息转发模块302,用于通过所述消息队列确定模块403确定的所述目标消息转发队列向所述目标客户端发送每一条所述用户筛选消息。

在本发明一实施例中,所述服务端进一步包括:处理模块;

所述处理模块,用于执行:

s1:创建kafka消息队列;

s2:按照时间顺序,将所述至少一条实时消息推送至所述kafka消息队列中;

所述实时消息转发模块,用于执行:

s3:读取所述处理模块创建的所述kafka消息队列中的第一条实时消息;

s4:确定各个所述用户消息匹配条件中是否存在与所述第一条实时消息相对应的至少一个目标用户消息匹配条件,其中,所述目标用户消息匹配条件包括第一条实时消息中的字段对应的字段名,如果是,执行s5,否则,执行s6;

s5:将所述第一条实时消息作为用户筛选消息,将每一个所述目标用户消息匹配条件对应的用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,并执行s6;

s6:将所述kafka消息队列中所述第一条实时消息的下一条实时消息作为第一条实时消息,返回s4。

可以理解的是,本发明实施例示意的结构并不构成对服务端的具体限定。在本发明的另一些实施例中,服务端可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明实施例还提供了一种服务端,包括:至少一个存储器和至少一个处理器;

所述至少一个存储器,用于存储机器可读程序;

所述至少一个处理器,用于调用所述机器可读程序,执行本发明任一实施例中的消息转发方法。

本发明实施例还提供了一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行本发明任一实施例中的消息转发方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。

在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。

用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务端计算机上下载程序代码。

此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。

此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。

本发明各个实施例至少具有如下有益效果:

1、在本发明一实施例中,用户操作字段名是各个客户端需要访问的信息对应的字段名,将服务端预先设置的用户权限字段名和各个客户端发来的用户操作字段名设置为各个客户端的用户消息匹配条件,通过各个客户端的用户消息匹配条件对实时消息进行筛选,筛选出来的实时消息就是各个客户端能够访问且需要访问的实时消息,即用户筛选消息,同时根据发来生成目标用户消息匹配条件的用户操作字段名可以确定对应的各个客户端,将用户筛选消息发送给相对应的各个客户端即可实现实时消息的转发。通过上述方式,不需要在客户端进行大量实时消息的筛选,从而避免客户端的网络负荷过大。

2、在本发明一实施例中,用户权限字段名是各个客户端能够访问的信息,将用户权限字段名发送给各个客户端,各个客户端可以在用户权限字段名中进行选择,确定出自己需要访问的信息对应的字段名,即各个客户端的用户操作字段名。

需要说明的是,上述各流程和各系统结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。

以上各实施例中,硬件单元可以通过机械方式或电气方式实现。例如,一个硬件单元可以包括永久性专用的电路或逻辑(如专门的处理器,fpga或asic)来完成相应操作。硬件单元还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。

上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。


技术特征:

1.消息转发方法,其特征在于,应用于服务端,预先设置至少一个用户权限字段名,其中,所述用户权限字段名对应字段为客户端能够访问的信息,包括:

a0:获取至少一条实时消息;

a1:获取至少一个客户端发送的至少一个用户操作字段名,其中,所述用户操作字段名对应的字段为客户端需要访问的信息;

a2:根据所述至少一个用户权限字段名和所述至少一个客户端发送的所述至少一个用户操作字段名,生成每一个所述客户端对应的用户消息匹配条件;

a3:确定所述至少一条实时消息中,是否存在与各个所述用户消息匹配条件中的至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息;

a4:当存在与至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息时,将每一个所述目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,以使所述目标客户端输出接收到的所述至少一条用户筛选消息。

2.根据权利要求1所述的消息转发方法,其特征在于,

在所述预先设置至少一个用户权限字段名之后,在所述a1之前,进一步包括:

将所述至少一个用户权限字段名发送给至少一个客户端,以使用户从所述客户端接收到的所述至少一个用户权限字段名中确定至少一个用户操作字段名。

3.根据权利要求1所述的消息转发方法,其特征在于,

所述a2,包括:

针对每一个所述客户端,当所述至少一个用户权限字段名中包含所述客户端发送的所述至少一个用户操作字段名时,将所述客户端发送的所述至少一个用户操作字段名作为所述客户端对应的用户消息匹配条件。

4.根据权利要求1所述的消息转发方法,其特征在于,

在所述a2之前,进一步包括:

获取每一个所述客户端发送的用于指示客户端身份的窗口id;

创建每一个所述窗口id对应的消息转发队列;

当存在与至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息时,在所述将每一个所述目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端之前,进一步包括:

针对每一个所述目标用户消息匹配条件执行:

确定与所述目标用户消息匹配条件相对应的目标客户端,其中,所述目标客户端为发来生成所述目标用户消息匹配条件时的所述用户操作字段名的客户端;

从创建的各个所述消息转发队列中,确定与所述目标客户端的窗口id相对应的目标消息转发队列;

按照时间顺序,将所述目标用户消息匹配条件相对应的至少一条用户筛选消息推送到所述目标消息转发队列中;

所述将每一个所述目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,包括:

通过所述目标消息转发队列向所述目标客户端发送每一条所述用户筛选消息。

5.根据权利要求1所述的消息转发方法,其特征在于,

在所述a0之后,在所述a3之前,进一步包括:

s1:创建kafka消息队列;

s2:按照时间顺序,将所述至少一条实时消息推送至所述kafka消息队列中;

所述a4,包括:

s3:读取所述kafka消息队列中的第一条实时消息;

s4:确定各个所述用户消息匹配条件中是否存在与所述第一条实时消息相对应的至少一个目标用户消息匹配条件,其中,所述目标用户消息匹配条件包括第一条实时消息中的字段对应的字段名,如果是,执行s5,否则,执行s6;

s5:将所述第一条实时消息作为用户筛选消息,将每一个所述目标用户消息匹配条件对应的用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,并执行s6;

s6:将所述kafka消息队列中所述第一条实时消息的下一条实时消息作为第一条实时消息,返回s4。

6.服务端,其特征在于,包括:

系统条件设置模块,用于预先设置至少一个用户权限字段名,其中,所述用户权限字段名对应字段为客户端能够访问的信息;

实时消息获取模块,用于获取至少一条实时消息;

客户端信息获取模块,用于获取至少一个客户端发送的至少一个用户操作字段名,其中,所述用户操作字段名对应的字段为客户端需要访问的信息;

筛选条件设置模块,用于根据所述系统条件设置模块设置的所述至少一个用户权限字段名和所述客户端信息获取模块获取的所述至少一个客户端发送的所述至少一个用户操作字段名,生成每一个所述客户端对应的用户消息匹配条件;

筛选模块,用于确定所述实时消息获取模块获取的所述至少一条实时消息中,是否存在与所述筛选条件设置模块生成的各个所述用户消息匹配条件中的至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息;

实时消息转发模块,用于当存在所述筛选模块确定的至少一条用户筛选消息时,将每一个所述目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,以使所述目标客户端输出接收到的所述至少一条用户筛选消息。

7.根据权利要求6所述的服务端,其特征在于,

所述实时消息转发模块,进一步用于将所述系统条件设置模块设置的所述至少一个用户权限字段名发送给至少一个客户端,以使用户从所述客户端接收到的所述至少一个用户权限字段名中确定至少一个用户操作字段名。

8.根据权利要求6所述的服务端,其特征在于,

所述筛选条件设置模块,用于针对每一个所述客户端,当所述至少一个用户权限字段名中包含所述客户端发送的所述至少一个用户操作字段名时,将所述客户端发送的所述至少一个用户操作字段名作为所述客户端对应的用户消息匹配条件。

9.根据权利要求6所述的服务端,其特征在于,所述服务端进一步包括:创建模块、客户端确定模块、消息队列确定模块和推送模块;

所述创建模块,用于获取每一个所述客户端发送的用于指示客户端身份的窗口id;创建每一个所述窗口id对应的消息转发队列;

所述客户端确定模块,用于确定与所述筛选模块确定的所述目标用户消息匹配条件相对应的目标客户端,其中,所述目标客户端为发来生成所述目标用户消息匹配条件时的所述用户操作字段名的客户端;

所述消息队列确定模块,用于从所述创建模块创建的各个所述消息转发队列中,确定与所述客户端确定模块确定的所述目标客户端的窗口id相对应的目标消息转发队列;

所述推送模块,用于按照时间顺序,将所述筛选模块确定的至少一条用户筛选消息推送到所述消息队列确定模块确定的所述目标消息转发队列中;

所述实时消息转发模块,用于通过所述消息队列确定模块确定的所述目标消息转发队列向所述目标客户端发送每一条所述用户筛选消息。

10.根据权利要求6所述的服务端,其特征在于,进一步包括:处理模块;

所述处理模块,用于执行:

s1:创建kafka消息队列;

s2:按照时间顺序,将所述至少一条实时消息推送至所述kafka消息队列中;

所述实时消息转发模块,用于执行:

s3:读取所述处理模块创建的所述kafka消息队列中的第一条实时消息;

s4:确定各个所述用户消息匹配条件中是否存在与所述第一条实时消息相对应的至少一个目标用户消息匹配条件,其中,所述目标用户消息匹配条件包括第一条实时消息中的字段对应的字段名,如果是,执行s5,否则,执行s6;

s5:将所述第一条实时消息作为用户筛选消息,将每一个所述目标用户消息匹配条件对应的用户筛选消息,发送给发来所述目标用户消息匹配条件的目标客户端,并执行s6;

s6:将所述kafka消息队列中所述第一条实时消息的下一条实时消息作为第一条实时消息,返回s4。

技术总结
本发明提供了消息转发方法及服务端,包括:预设至少一个用户权限字段名,获取至少一条实时消息;获取至少一个客户端发送的至少一个用户操作字段名;根据至少一个用户权限字段名和至少一个客户端发送的至少一个用户操作字段名,生成每一个客户端对应的用户消息匹配条件;确定至少一条实时消息中,是否存在与各个用户消息匹配条件中的至少一个目标用户消息匹配条件相对应的至少一条用户筛选消息;如果是,将每一个目标用户消息匹配条件对应的至少一条用户筛选消息,发送给发来目标用户消息匹配条件的目标客户端,以使目标客户端输出接收到的至少一条用户筛选消息。本方案可以解决客户端网络负荷过大的问题。

技术研发人员:马小波;李科
受保护的技术使用者:浪潮天元通信信息系统有限公司
技术研发日:2020.01.08
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-57059.html

最新回复(0)