一种对消息进行处理的方法及装置与流程

文档序号:30226021发布日期:2022-06-01 01:15阅读:89来源:国知局
一种对消息进行处理的方法及装置与流程

1.本发明涉及信息处理技术领域,并且具体而言,涉及一种对消息进行处理的方法及装置、计算机可读存储介质、电子设备以及计算机程序产品。


背景技术:

2.对于相同数据,企业内多业务场景均可能使用同一数据源。这种情况可能会导致多业务方调用相同的数据并给同一用户发送了内容相同或相似的推送消息。这种重复的推送消息对用户体验的影响较大,因此需要对相同数据的请求进行限制,且如果短时间内多业务方调用相同数据,还会存在高并发的问题。
3.此外,信息提供商的多业务场景均会使用服务平台的消息推送功能。如果多业务方都计划在同一时间点对用户进行相同的消息推送,那么用户就会在短时间内接收到多条消息推送。这种情况下,对于用户来说,由于频繁被消息推送打扰,使得用户的体验感变差;而对于业务方来说,消息推送的效果也会因用户的体验感变差而大打折扣。
4.因此,现有技术中缺少一种能够解决上述问题的对消息进行处理的方法及装置。


技术实现要素:

5.鉴于此,对于相同数据的多业务方调用情况,本发明基于时间优先的原则,即先请求推送的消息优先进行推送,后请求推送的相同消息进行拦截,以防止相同消息的重复推送,且在高并发的前提下也能保证拦截重复推送消息的有效性。此外,对于多业务方的消息推送场景,需要根据业务方希望的推送时间并结合实际情况、推送消息的优先级、可接受时间范围等进行配置。据此,对于短时间内的超过一条的推送(push)消息计划需要根据实际情况进行拦截。在通常情况下,让用户在短时间内最多仅能接收到一条推送消息,从而防止对用户造成过多的打扰,保证用户的体验感。
6.基于本发明实施例的一个方面,提供了一种对消息进行处理的方法,所述方法包括:
7.在接收到待推送的消息时,对所述待推送的消息进行解析以获取所述待推送的消息中的全局标识符、用户标识符和推送配置信息,其中所述推送配置信息包括:预定推送时间和推送优先级;
8.基于所述全局标识符,计算与所述待推送的消息相关联的多个数据标识,基于所述多个数据标识,在数据缓存中确定与所述待推送的消息相对应的标志位,基于与所述待推送的消息相对应的标志位的当前值,确定所述待推送的消息是否为重复发送的消息;
9.当确定所述待推送的消息不是重复推送的消息时,基于所述用户标识符,确定与所述待推送的消息相关联的消息推送队列,并获取所述消息推送队列中每个推送消息的预定推送时间;
10.基于所述待推送的消息的推送配置信息、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新
的预定推送时间;以及
11.基于所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间对所述消息推送队列进行更新。
12.可选地,在接收到待推送的消息之前,所述方法还包括:
13.基于数据源中的数据内容生成所述待推送的消息;
14.生成用于标识所述待推送的消息的全局唯一键值,并在所述待推送的消息中附加所述全局唯一键值。
15.可选地,所述生成用于标识所述待推送的消息的全局唯一键值,包括:
16.获取所述待推送的消息的业务标识和事物标识,其中所述业务标识用于标识所述待推送的消息所归属的业务类型,所述事物标识用于标识所述待推送的消息的事物名称;
17.确定在所述数据源中生成所述待推送的消息的生成时间;
18.基于所述业务标识、事物标识和生成时间,生成用于标识所述待推送的消息的全局唯一键值。
19.可选地,所述方法还包括:
20.业务方从所述数据源提取所述待推送的消息,确定所述待推送的消息的目标用户;
21.对所述待推送的消息进行解析,以获取所述全局唯一键值;
22.基于所述待推送的消息的全局唯一键值和所述目标用户的用户标识符,生成所述待推送的消息的全局标识符,并将所述全局标识符附加到所述待推送的消息中。
23.可选地,所述基于所述全局标识符,计算与所述待推送的消息相关联的多个数据标识,包括:
24.利用多个映射函数中的每个映射函数对所述全局标识符进行计算,以获得相应的多个映射值;
25.基于多个映射值,获得与所述待推送的消息相关联的多个数据标识。
26.可选地,所述基于多个映射值,获得与所述待推送的消息相关联的多个数据标识,包括:
27.将多个映射值中的每个映射值依次序进行取余运算,以获得由多个余数构成的余数序列;
28.按照所述余数序列中的次序,将多个余数作为与所述待推送的消息相关联的多个数据标识。
29.可选地,在基于所述多个数据标识,在数据缓存中确定与所述待推送的消息相对应的标志位之前,所述方法还包括:
30.在所述数据缓存中创建数组容器,为所述数组容器中的每个数组设置预定数量的数组下标,其中所述预定数量与数据标识的数量相同。
31.可选地,所述基于所述多个数据标识,在数据缓存中确定与所述待推送的消息相对应的标志位,包括:
32.基于所述多个数据标识确定与所述待推送的消息相对应的数组的数组下标;
33.根据所述数组下标在所述数据缓存的数组容器中,检索与所述待推送的消息相对应的数组;
34.根据所述数组的内容值,确定与所述待推送的消息相对应的标志位。
35.可选地,所述基于与所述待推送的消息相对应的标志位的当前值,确定所述待推送的消息是否为重复发送的消息,包括:
36.当与所述待推送的消息相对应的标志位的当前值为第一数值时,确定所述待推送的消息是重复发送的消息;当与所述待推送的消息相对应的标志位的当前值为第二数值时,确定所述待推送的消息不是重复发送的消息;
37.当所述待推送的消息不是重复发送的消息时,将所述待推送的消息放置到相关联的消息推送队列中,并向所述待推送的消息的业务方发送指示消息发送就绪的响应消息;
38.当所述待推送的消息是重复发送的消息时,不将所述待推送的消息放置到相关联的消息推送队列中,并向所述待推送的消息的业务方发送指示消息重复的响应消息。
39.可选地,在接收到待推送的消息之前,所述方法还包括:
40.为用户创建相关联的消息推送队列;
41.基于用户预先设置的配置文件,确定与用户相关联的所述消息推送队列的时间间隔参数。
42.可选地,所述方法还包括:
43.基于数据源中的数据内容生成所述待推送的消息;
44.确定作为所述待推送的消息的推送目标的用户,并获取作为推送目标的用户的用户标识符;
45.基于所述待推送的消息的数据内容确定推送配置信息;
46.在所述待推送的消息中附加相应的用户标识符和推送配置信息。
47.可选地,所述基于所述用户标识符,确定与所述待推送的消息相关联的消息推送队列,包括:
48.基于所述用户标识符确定作为所述待推送的消息的推送目标的用户;
49.获取与所述推送目标的用户相关联的消息推送队列,作为与所述待推送的消息相关联的消息推送队列。
50.可选地,其中,在所述消息推送队列中,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述消息推送队列的时间间隔参数中的时间间隔。
51.可选地,所述基于所述待推送的消息的推送配置信息、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间,包括:
52.基于所述待推送的消息的推送配置信息,确定所述待推送的消息的预定推送时间和推送优先级,其中所述推送优先级包括:紧急事件优先级、高推送优先级和低推送优先级;
53.将所述待推送的消息的预定推送时间,作为所述待推送的消息在消息推送队列中的初始推送时间;
54.基于所述待推送的消息的推送优先级,确定所述消息推送队列的更新方式;
55.根据所述消息推送队列的更新方式,并且根据所述待推送的消息的初始推送时间、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间。
56.可选地,所述基于所述待推送的消息的推送优先级,确定所述消息推送队列的更新方式,包括:
57.当所述待推送的消息的推送优先级为紧急事件优先级时,确定所述消息推送队列的更新方式为以所述待推送的消息为紧急消息的更新方式;
58.当所述待推送的消息的推送优先级为高推送优先级时,确定所述消息推送队列的更新方式为以所述待推送的消息为基础的更新方式;
59.当所述待推送的消息的推送优先级为低推送优先级时,确定所述消息推送队列的更新方式为以所述消息推送队列中现有的推送消息为基础的更新方式。
60.可选地,所述根据所述消息推送队列的更新方式,并且根据所述待推送的消息的初始推送时间、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间,包括:
61.当所述消息推送队列的更新方式为以所述待推送的消息为紧急消息的更新方式,将所述待推送的消息的初始推送时间确定为所述待推送的消息的预定推送时间,并且将现有的每个推送消息的预定推送时间保持不变。
62.可选地,所述根据所述消息推送队列的更新方式,并且根据所述待推送的消息的初始推送时间、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间,包括:
63.当所述消息推送队列的更新方式为以所述待推送的消息为基础的更新方式时,将所述待推送的消息的初始推送时间确定为所述待推送的消息的预定推送时间;
64.以所述待推送的消息的预定推送时间为基准,根据现有的每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定现有的每个推送消息的更新的预定推送时间,以使得更新后,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述时间间隔参数中的时间间隔。
65.可选地,所述以所述待推送的消息的预定推送时间为基准,根据现有的每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定现有的每个推送消息的更新的预定推送时间,包括:
66.按照预定推送时间与所述待推送的消息从相邻到远离的顺序,基于消息推送队列的时间间隔参数对所述消息推送队列中需要调整预定推送时间的推送消息进行时间调整,确定每个推送消息的更新的预定推送时间。
67.可选地,所述根据所述消息推送队列的更新方式,并且根据所述待推送的消息的初始推送时间、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间,包括:
68.当所述消息推送队列的更新方式为以所述消息推送队列中现有的推送消息为基础的更新方式时,当所述待推送的消息的初始推送时间与任意推送消息的预定推送时间之间的时间间隔小于时间间隔参数中的时间间隔时,调整所述待推送的消息的预定推送时间,以使得更新后,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述时间间隔参数中的时间间隔。
69.可选地,所述方法还包括:在图形界面中对所述消息推送队列进行显示,并能够根据所接收的输入操作,对所述消息推送队列中任意推送消息的预定推送时间进行修改。
70.基于本发明实施例的另一方面,提供了一种对消息进行处理的装置,所述装置包括:
71.解析单元,用于在接收到待推送的消息时,对所述待推送的消息进行解析以获取所述待推送的消息中的全局标识符、用户标识符和推送配置信息,其中所述推送配置信息包括:预定推送时间和推送优先级;
72.计算单元,用于基于所述全局标识符,计算与所述待推送的消息相关联的多个数据标识,基于所述多个数据标识,在数据缓存中确定与所述待推送的消息相对应的标志位,基于与所述待推送的消息相对应的标志位的当前值,确定所述待推送的消息是否为重复发送的消息;
73.获取单元,用于当确定所述待推送的消息不是重复推送的消息时,基于所述用户标识符,确定与所述待推送的消息相关联的消息推送队列,并获取所述消息推送队列中每个推送消息的预定推送时间;
74.确定单元,用于基于所述待推送的消息的推送配置信息、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间;以及
75.更新单元,用于基于所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间对所述消息推送队列进行更新。
76.可选地,所述装置还包括:生成单元,用于基于数据源中的数据内容生成所述待推送的消息;生成用于标识所述待推送的消息的全局唯一键值,并在所述待推送的消息中附加所述全局唯一键值。
77.可选地,所述生成单元包括:
78.第一获取子单元,用于获取所述待推送的消息的业务标识和事物标识,其中所述业务标识用于标识所述待推送的消息所归属的业务类型,所述事物标识用于标识所述待推送的消息的事物名称;
79.第一确定子单元,用于确定在所述数据源中生成所述待推送的消息的生成时间;
80.生成子单元,用于基于所述业务标识、事物标识和生成时间,生成用于标识所述待推送的消息的全局唯一键值。
81.可选地,所述生成单元还包括:
82.第二确定子单元,用于促使业务方从所述数据源提取所述待推送的消息,确定所述待推送的消息的目标用户;
83.解析子单元,用于对所述待推送的消息进行解析,以获取所述全局唯一键值;
84.附加子单元,用于基于所述待推送的消息的全局唯一键值和所述目标用户的用户标识符,生成所述待推送的消息的全局标识符,并将所述全局标识符附加到所述待推送的消息中。
85.可选地,所述计算单元包括:
86.计算子单元,用于利用多个映射函数中的每个映射函数对所述全局标识符进行计算,以获得相应的多个映射值;
87.获得子单元,用于基于多个映射值,获得与所述待推送的消息相关联的多个数据标识。
88.可选地,所述获得子单元具体用于将多个映射值中的每个映射值依次序进行取余运算,以获得由多个余数构成的余数序列;按照所述余数序列中的次序,将多个余数作为与所述待推送的消息相关联的多个数据标识。
89.可选地,所述装置还包括:第一创建单元,用于在所述数据缓存中创建数组容器,为所述数组容器中的每个数组设置预定数量的数组下标,其中所述预定数量与数据标识的数量相同。
90.可选地,所述计算单元还包括:
91.第三确定子单元,用于基于所述多个数据标识确定与所述待推送的消息相对应的数组的数组下标;
92.检索子单元,用于根据所述数组下标在所述数据缓存的数组容器中,检索与所述待推送的消息相对应的数组;
93.第四确定子单元,用于根据所述数组的内容值,确定与所述待推送的消息相对应的标志位。
94.可选地,所述计算单元还包括:
95.第五确定子单元,用于当与所述待推送的消息相对应的标志位的当前值为第一数值时,确定所述待推送的消息是重复发送的消息;当与所述待推送的消息相对应的标志位的当前值为第二数值时,确定所述待推送的消息不是重复发送的消息;
96.处理子单元,用于当所述待推送的消息不是重复发送的消息时,将所述待推送的消息放置到相关联的消息推送队列中,并向所述待推送的消息的业务方发送指示消息发送就绪的响应消息;当所述待推送的消息是重复发送的消息时,不将所述待推送的消息放置到相关联的消息推送队列中,并向所述待推送的消息的业务方发送指示消息重复的响应消息。
97.可选地,所述装置还包括:第二创建单元,用于为用户创建相关联的消息推送队列;基于用户预先设置的配置文件,确定与用户相关联的所述消息推送队列的时间间隔参数。
98.可选地,所述生成单元,还用于基于数据源中的数据内容生成所述待推送的消息;确定作为所述待推送的消息的推送目标的用户,并获取作为推送目标的用户的用户标识符;基于所述待推送的消息的数据内容确定推送配置信息;在所述待推送的消息中附加相应的用户标识符和推送配置信息。
99.可选地,所述获取单元,包括:
100.第六确定子单元,用于基于所述用户标识符确定作为所述待推送的消息的推送目标的用户;
101.第二获取子单元,用于获取与所述推送目标的用户相关联的消息推送队列,作为与所述待推送的消息相关联的消息推送队列。
102.可选地,其中,在所述消息推送队列中,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述消息推送队列的时间间隔参数中的时间间隔。
103.可选地,确定单元具体用于:
104.基于所述待推送的消息的推送配置信息,确定所述待推送的消息的预定推送时间和推送优先级,其中所述推送优先级包括:紧急事件优先级、高推送优先级和低推送优先
级;
105.将所述待推送的消息的预定推送时间,作为所述待推送的消息在消息推送队列中的初始推送时间;
106.基于所述待推送的消息的推送优先级,确定所述消息推送队列的更新方式;
107.根据所述消息推送队列的更新方式,并且根据所述待推送的消息的初始推送时间、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间。
108.可选地,确定单元具体用于:
109.当所述待推送的消息的推送优先级为紧急事件优先级时,确定所述消息推送队列的更新方式为以所述待推送的消息为紧急消息的更新方式;
110.当所述待推送的消息的推送优先级为高推送优先级时,确定所述消息推送队列的更新方式为以所述待推送的消息为基础的更新方式;
111.当所述待推送的消息的推送优先级为低推送优先级时,确定所述消息推送队列的更新方式为以所述消息推送队列中现有的推送消息为基础的更新方式。
112.可选地,确定单元具体用于:当所述消息推送队列的更新方式为以所述待推送的消息为紧急消息的更新方式,将所述待推送的消息的初始推送时间确定为所述待推送的消息的预定推送时间,并且将现有的每个推送消息的预定推送时间保持不变。
113.可选地,确定单元具体用于:
114.当所述消息推送队列的更新方式为以所述待推送的消息为基础的更新方式时,将所述待推送的消息的初始推送时间确定为所述待推送的消息的预定推送时间;
115.以所述待推送的消息的预定推送时间为基准,根据现有的每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定现有的每个推送消息的更新的预定推送时间,以使得更新后,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述时间间隔参数中的时间间隔。
116.可选地,确定单元具体用于:
117.按照预定推送时间与所述待推送的消息从相邻到远离的顺序,基于消息推送队列的时间间隔参数对所述消息推送队列中需要调整预定推送时间的推送消息进行时间调整,确定每个推送消息的更新的预定推送时间。
118.可选地,确定单元具体用于:
119.当所述消息推送队列的更新方式为以所述消息推送队列中现有的推送消息为基础的更新方式时,当所述待推送的消息的初始推送时间与任意推送消息的预定推送时间之间的时间间隔小于时间间隔参数中的时间间隔时,调整所述待推送的消息的预定推送时间,以使得更新后,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述时间间隔参数中的时间间隔。
120.可选地,所述装置还包括:显示单元,用于在图形界面中对所述消息推送队列进行显示,并能够根据所接收的输入操作,对所述消息推送队列中任意推送消息的预定推送时间进行修改。
121.基于本发明实施例的又一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于执行上述任一实施例所述的方法。
122.基于本发明实施例的再一方面,提供了一种电子设备,所述电子设备包括:处理器和存储器;其中,
123.所述存储器,用于存储所述处理器可执行指令的存储器;
124.所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述任一实施例所述的方法。
125.基于本发明实施例的再一方面,提供了一种计算机程序产品,包括计算机可读代码,当所述计算机可读代码在设备上运行时,所述设备中的处理器执行用于实现上述任一实施例所述的方法。
126.基于本发明上述实施例提供的一种对消息进行处理的方法及装置、计算机可读存储介质、电子设备以及计算机程序产品,对于相同数据的多业务方调用场景,即使是高并发的情况下,也能够根据先到先发、后到不发的原则进行发送或推送,即,即使在高并发的场景下,针对于相同用户或客户,可以实现对先请求的推送消息进行发送,对后请求的相同推送消息进行拦截,从而保证了用户体验。在高并发的情况下,仍能够准确地通过程序对多业务方调用场景下的接口调用发送请求进行逐一地过滤,避免重复发送相同推送消息给同一用户或客户的情况。进一步地,基于本发明上述实施例提供的一种对消息进行处理的方法及装置、计算机可读存储介质、电子设备以及计算机程序产品,在多业务方需要发送推送消息时,根据具体情况对推送消息的实际推送时间进行配置,能够使得各个业务方之间选择不冲突的消息推送时间,既保证了用户体验感,也保障了消息推送的实际效果。另外,本发明上述实施例将人工审核配置时间的工作交给计算机来处理,并且提供了可视化的时间轴,提高了对消息推送时间的监控和调整能力。
附图说明
127.通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
128.图1是本发明一示例性实施例提供的对消息进行处理的方法的流程图;
129.图2是本发明另一示例性实施例提供的对消息进行处理的方案的示意图;
130.图3是本发明再一示例性实施例提供的对消息进行处理的方案的示意图;
131.图4是本发明一示例性实施例提供的对消息进行处理的处理实例的示意图;
132.图5是本发明一示例性实施例提供的对消息进行处理的装置的结构示意图;
133.图6是本发明一示例性实施例提供的电子设备的示意图。
具体实施方式
134.下面,将参考附图详细地描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。
135.应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
136.本领域技术人员可以理解,本发明实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
137.还应理解,在本发明实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
138.还应理解,对于本发明实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
139.另外,本发明中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本发明中字符“/”,一般表示前后关联对象是一种“或”的关系。
140.还应理解,本发明对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
141.同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
142.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
143.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
144.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
145.本发明实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
146.终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
147.本发明实施例提供了一种对消息进行处理的方法及装置、计算机可读存储介质、电子设备以及计算机程序产品,其中该方法包括:
148.在接收到待推送的消息时,对所述待推送的消息进行解析以获取所述待推送的消息中的全局标识符、用户标识符和推送配置信息,其中所述推送配置信息包括:预定推送时间和推送优先级;
149.基于所述全局标识符,计算与所述待推送的消息相关联的多个数据标识,基于所述多个数据标识,在数据缓存中确定与所述待推送的消息相对应的标志位,基于与所述待
推送的消息相对应的标志位的当前值,确定所述待推送的消息是否为重复发送的消息;
150.当确定所述待推送的消息不是重复推送的消息时,基于所述用户标识符,确定与所述待推送的消息相关联的消息推送队列,并获取所述消息推送队列中每个推送消息的预定推送时间;
151.基于所述待推送的消息的推送配置信息、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间;以及
152.基于所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间对所述消息推送队列进行更新。
153.图1是本发明一示例性实施例提供的对消息进行处理的方法的流程图。如图1所示,该方法包括:
154.步骤101,在接收到待推送的消息时,对所述待推送的消息进行解析以获取所述待推送的消息中的全局标识符、用户标识符和推送配置信息,其中所述推送配置信息包括:预定推送时间和推送优先级。可选地,为了对待推送的消息进行处理,从而避免多个业务方将相同的消息分别推送给同一用户和客户,首先需要对待推送的消息进行识别,从而基于对待推送的消息的识别结果进行后续处理。为此,在接收到待推送的消息时,对待推送的消息进行解析以获取待推送的消息的全局标识符。例如,待推送的消息中附加了全局标识符,并且全局标识符是能够唯一地标识或区分待推送的消息的标识符。
155.在一个实施例中,在接收到待推送的消息之前,该方法还包括:基于数据源中的数据内容生成待推送的消息;生成用于标识待推送的消息的全局唯一键值,并在待推送的消息中附加全局唯一键值。可选地,多个业务方或可以使用统一的数据源,并且因此数据源中的数据能够保证数据一致性。应当了解的是,业务方可以是能够从数据源获取待推送的消息,并根据预先设定的推送规则、推送策略或推送计划向相关联的每个用户或客户提供或发送待推送的消息的业务提供者、业务提供设备、服务提供者、服务提供设备或服务提供方。为了能够给每个用户推送用户所希望或定制的消息,由数据源基于定时或最新的数据内容生成待推送的消息。多个业务方均可以从数据源获取基于定时或最新的数据内容生成待推送的消息。可选地,为了能够对待推送的消息进行标识或区别,从而多个业务方的待推送的消息是否为相同的消息,生成用于标识待推送的消息的全局唯一键值。
156.在一个实施例中,生成用于标识待推送的消息的全局唯一键值包括:获取待推送的消息的业务标识和事物标识,其中业务标识用于标识待推送的消息所归属的业务类型,事物标识用于标识待推送的消息的事物名称。可选地,在基于数据源中的数据内容生成待推送的消息时,可以确定所生成的待推送的消息所归属的业务类型和事物名称。其中所归属的业务类型可以是与待推送的消息相关联的业务的业务名称,或待推送的消息所归属的业务线的业务线名称,例如,风险提示业务、企业风险提示业务、新闻业务、法律风险提示业务等。应当了解的是,可以将业务定义或划分为各种功能层级的业务分类,例如,风险提示业务、企业风险提示业务和法律风险提示业务是逐渐细化的业务分类。事物名称是能够描述待推送的消息的消息内容的信息,例如,事物名称可以说待推送的消息的标题、内容概述等。其中业务标识和事物标识均可以使用各种语言,例如,汉字、英文等。
157.在一个实施例中,该方法还包括:确定在数据源中生成待推送的消息的生成时间。
生成时间可以使用各种精度的时间类型。生成时间可以包括年月日,例如,生成时间为20220108(2022年1月8日);可以包括年月日小时,例如,生成时间为2022010809(2022年1月8日9点);可以包括年月日小时分秒,例如,生成时间为20220108090608(2022年1月8日9时6分8秒)。进一步地,生成时间可以在年月日小时分秒后,包括毫秒,例如,生成时间为20220108090608096(2022年1月8日9时6分8秒96毫秒)。应当了解的是,本发明根据数据源中生成待推送的消息的数量或时间密度来确定生成时间精度,从而确保不同的待推送的消息的生成时间不同。
158.在一个实施例中,该方法还包括:基于业务标识、事物标识和生成时间,生成用于标识待推送的消息的全局唯一键值。可选地,可以按照任意顺序,将业务标识、事物标识和生成时间的字符进行组合或拼接以生成,待推送的消息的全局唯一键值unique_key,如图2所示,push推送消息接口的人群过滤防止重复下发机制包括:对于数据源一致或数据源相同的每个业务方(如图2中示出的三个业务方),采用业务id+事物id+时间(例如,日期、具体时间等)作为推送消息的唯一键值unique_key(全局唯一键值unique_key)。在生成推送消息的唯一键值unique_key后,待推送的消息中附加全局唯一键值。例如,在对用户端使用推送消息时,需要在推送消息中附带唯一键值unique_key。
159.在一个实施例中,该方法还包括:业务方从数据源提取待推送的消息,确定待推送的消息的目标用户。业务方可以为一个或多个用户或客户提供服务,并且业务方可以为每个用户提供用户所需的定制推送消息或不同的推送消息。为此,业务方从数据源提取待推送的消息,从多个用户中选择与待推送的消息相关联、希望获取待推送的消息或预定了待推送的消息的目标用户,从而确定待推送的消息的目标用户。由于在生成推送消息的唯一键值后,待推送的消息中附加全局唯一键值,因此通过对待推送的消息进行解析,能够获取全局唯一键值。
160.在一个实施例中,基于待推送的消息的全局唯一键值和目标用户的用户标识符,生成待推送的消息的全局标识符,并将全局标识符附加到待推送的消息中。具体地,在对用户端使用推送消息时,需要在推送消息中附带唯一键值unique_key,并且随后,服务端使用unique_key+@+user的拼接作为唯一字符串,即全局标识符。其中user为目标用户的标识符或能够标识目标用户的字符串。
161.在一个实施例中,在接收到待推送的消息之前,该方法还包括:为用户创建相关联的消息推送队列;基于用户预先设置的配置文件,确定与用户相关联的所述消息推送队列的时间间隔参数。
162.应当理解的是,为了给用户提供基于推送时间的消息推送服务,为用户创建相关联的消息推送队列,从而能够根据消息推送队列为用户进行消息推送。在为用户创建相关联的消息推送队列后,利用用户的用户标识符对消息推送队列进行标识。
163.可选地,为了能够适应不同用户的需求,可以根据用户的设置来确定消息推送队列中相邻推送消息的间隔时间,即用户希望接收到推送消息的最小时间间隔,例如,30分钟、1个小时等任意合理数值。为此,本发明基于用户预先设置的配置文件,确定与用户相关联的所述消息推送队列的时间间隔参数,其中所述时间间隔参数包括时间间隔或用于指示时间间隔的任意参数。
164.在一个实施例中,该方法还包括:基于数据源中的数据内容生成所述待推送的消
息;确定作为所述待推送的消息的推送目标的用户,并获取作为推送目标的用户的用户标识符;基于所述待推送的消息的数据内容确定推送配置信息;在所述待推送的消息中附加相应的用户标识符和推送配置信息。优选地,可以使用统一的数据源,因此数据源中的数据能够保证数据一致性。
165.为了能够给每个用户推送用户所希望的消息,由数据源基于定时或最新的数据内容生成所述待推送的消息。优选地,推送消息push的广播调度机制支持立即/定时/周期/间隔地推送消息,如图3所示,图3是本发明再一示例性实施例提供的对消息进行处理的方案的示意图,push的广播调度机制可以包括:push定时(在设定的时间进行推送)计划任务cron、push周期(以预定的时间周期进行推送)计划任务cron、push立即(立即推送)计划任务cron以及push间隔(以预定的间隔时间进行推送)计划任务cron。push的广播调度机制的应用场景包括:营销、投放,即时通讯、新闻等。作为工具赋能,push的广播调度机制中的push定时配置能够提升信息的传递效率。
166.步骤102,基于所述全局标识符,计算与所述待推送的消息相关联的多个数据标识,基于所述多个数据标识,在数据缓存中确定与所述待推送的消息相对应的标志位,基于与所述待推送的消息相对应的标志位的当前值,确定所述待推送的消息是否为重复发送的消息。可选地,为了能够标识待推送的消息是否已经重复,在数据缓存中为待推送的消息设置标识位,以使得通过标识位能够确定是否已经推送或安排推送了相同的待推送的消息。
167.在一个实施例中,基于全局标识符,计算与待推送的消息相关联的多个数据标识,包括:利用多个映射函数中的每个映射函数对全局标识符进行计算,以获得相应的多个映射值;基于多个映射值,获得与待推送的消息相关联的多个数据标识。可选地,映射函数可以是任意合理的哈希函数并且映射值可以是哈希值。利用多个哈希函数中的每个哈希函数对全局标识符进行计算,以获得相应的多个哈希值。随后,基于多个哈希值,获得与待推送的消息相关联的多个数据标识。当数据缓存中使用多个数组作为待推送的消息的标识位时,数据标识例如是数组下标。通过诸如数组下标的数据标识可以确定待推送的消息在数据缓存中的标识位的地址。
168.在一个实施例中,基于多个映射值,获得与待推送的消息相关联的多个数据标识,包括:将多个映射值中的每个映射值依次序进行取余运算,以获得由多个余数构成的余数序列;按照余数序列中的次序,将多个余数作为与待推送的消息相关联的多个数据标识。可选地,将多个映射值中的每个映射值依次序进行取余运算包括:确定每个映射值,即哈希值,的序列长度;确定与序列长度最近的最大质数(即,基于序列长度所确定的最大质数);将每个哈希值依次序对这个最大质数进行取余运算,以获得由多个余数构成的余数序列。将哈希值对最大质数进行取余运算,可以有效地防止哈希冲突。如图2所示,在一个实例中,采用“哈希map(映射)”中的“除留余数法”,对字符串进行三次哈希计算获得三个数组下标。例如,在使用应用程序接口api+filter过滤器的方式中,计算索引或数据标识:index=h(unique_key+user)mod size,其中index为索引或数据标识,unique_key为全局唯一键值,user为用户或客户的标识符,h(unique_key+user)为对全局唯一键值unique_key和用户或客户的标识符所构成的全局标识符(全局唯一标识符)计算哈希,mod为取余计算符以及size为最大质数。采用远程字典服务redis的比特bit类型作为数组容器大小为7千万;使用这三个下标去该容器找到标志位。即,数组容器中的每个数组可以作为相应的待推送的消
息的标志位或标识位。
169.在一个实施例中,在基于多个数据标识,在数据缓存中确定与待推送的消息相对应的标志位之前,该方法还包括:在数据缓存中创建数组容器,为数组容器中的每个数组设置预定数量的数组下标,其中预定数量与数据标识的数量相同。可选地,在数据缓存中创建包括多个数组的数组容器,并且设置数组下标的预定位数或预定数量。即,由预定位数或预定数量的数组下标来标识数组容器中的每个数组。应当了解的是,预定位数越多或预定数量越大,则数组容器中的数组的数量越多,从而能够表示或标识的待递送的消息越多。预定位数越少或预定数量越小,则数组容器中的数组的数量越少,从而能够表示或标识的待递送的消息越少。可选地,由于将每个数据标识或数组下标均用于标识待递送的消息,因此预定数量与数据标识的数量相同。
170.在一个实施例中,基于多个数据标识,在数据缓存中确定与待推送的消息相对应的标志位,包括:基于多个数据标识确定与待推送的消息相对应的数组的数组下标;根据所述数组下标在所述数据缓存的数组容器中,检索与所述待推送的消息相对应的数组;根据数组的内容值,确定与待推送的消息相对应的标志位。例如,当存在三个数据标识[index,index,index]:第一数据标识、第二数据标识和第三数据标识时,将第一数据标识作为数组容器中数组的第一数组下标、将第二数据标识作为数组容器中数组的第二数组下标和将第三数据标识作为数组容器中数组的第三数组下标。随后,根据第一数组下标、第二数组下标和第三数组下标在数据缓存的数组容器中,检索与待推送的消息相对应的数组。即相对应的数组的三个数组下标为第一数组下标、第二数组下标和第三数组下标。根据与待推送的消息相对应的数组的内容值,确定与待推送的消息相对应的标志位。例如,对应位都为1命中则重复,禁止推送该用户以防止重复发送。反之,则允许推送该用户,并修改对应位为1,代表这个用户已发送过该条推送信息。由于使用的是bit字节0和1,所以这种方式占用内存小,且效率高。
[0171]
基于与待推送的消息相对应的标志位的当前值,对待推送的消息进行处理。在一个实施例中,基于与待推送的消息相对应的标志位的当前值,确定所述待推送的消息是否为重复发送的消息,包括:当与所述待推送的消息相对应的标志位的当前值为第一数值时,确定所述待推送的消息是重复发送的消息;当与所述待推送的消息相对应的标志位的当前值为第二数值时,确定所述待推送的消息不是重复发送的消息。例如,标志位的值可以为1或0。当标志位为1时,表明待推送的消息是重复发送的消息,即已经发送过或已经计划发送与待推送的消息相同的推送消息。当标志位为0时,表明待推送的消息不是重复发送的消息,即没有发送过或没有计划发送与待推送的消息相同的推送消息。
[0172]
可选地,当待推送的消息不是重复发送的消息时,将待推送的消息放置到相关联的消息推送队列中,并向待推送的消息的业务方发送指示消息发送就绪的响应消息;当待推送的消息是重复发送的消息时,不将所述待推送的消息放置到相关联的消息推送队列中,并向所述待推送的消息的业务方发送指示消息重复的响应消息。对于待推送的消息是重复发送的消息,可以将待推送的消息进行丢弃。
[0173]
步骤103,当确定所述待推送的消息不是重复推送的消息时,基于所述用户标识符,确定与所述待推送的消息相关联的消息推送队列,并获取所述消息推送队列中每个推送消息的预定推送时间。
[0174]
其中,所述基于所述用户标识符,确定与所述待推送的消息相关联的消息推送队列,包括:基于所述用户标识符确定作为所述待推送的消息的推送目标的用户;获取与所述推送目标的用户相关联的消息推送队列,作为与所述待推送的消息相关联的消息推送队列。
[0175]
如上所述,由于利用用户的用户标识符对消息推送队列进行标识,因此基于所述用户标识符能够确定作为所述待推送的消息的推送目标的用户并且获取与所述推送目标的用户相关联的消息推送队列。将所述待推送的消息相关联的用户的消息推送队列确定为与所述待推送的消息相关联的消息推送队列。
[0176]
根据一个实施例,在所述消息推送队列中,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述消息推送队列的时间间隔参数中的时间间隔。用户的消息推送队列中包括一个或多个推送消息,并且每个推送消息具有预定推送时间。
[0177]
如上所述,由于根据用户的设置来确定消息推送队列中相邻推送消息的间隔时间,因此可以确保用户的消息推送队列中任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述消息推送队列的时间间隔参数中的时间间隔,如图4所示,图4是本发明一示例性实施例提供的对消息进行处理的处理实例的示意图,用户的消息队列中包括推送消息a、b、c、d和e(图中简称为消息a、消息b、消息c、消息d和消息e),并且时间间隔参数中的时间间隔为30分钟,推送消息a的预定推送时间为9:00、推送消息b的预定推送时间为10:00、推送消息c的预定推送时间为11:20、推送消息d的预定推送时间为11:50和推送消息e的预定推送时间为16:00,由此,推送消息a、b、c、d和e中任意两个相邻的推送消息的预定推送时间之间的时间间隔大于或等于30分钟。
[0178]
步骤104,基于所述待推送的消息的推送配置信息、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间。
[0179]
由于将待推送的消息放置到消息推送队列中时,由于用户预先设置了推送消息的时间间隔的值,因此可能会导致待推送的消息与消息推送队列中已有的推送消息之间的时间间隔不满足要求。在这种情况下,需要根据待推送的消息的实际情况对消息推送队列中的推送消息的预定推送时间或实际推送时间进行相应的调整。
[0180]
例如,如图3所示,为了提升用户体验度,控制推送push消息的时间间隔,对所有提交的push广播进行时间排序和比较。服务器端实现时间控制器,以根据(过去、当前、未来)时间节点的push事件自动判断用户设置的push广播是否有效。逻辑上,可以将多个push消息看作是一个线性时间轴,所有设置过的push消息都会进行排序,并且配合前台的用户接口ui进行交互,并且能够进行直观展示,使得管控更加灵活。用户及渠道进行发送时间的时间间隔的设置或限制。为用户提供统一入口,用户只需配置人群标签和数据源。配置好的标签即相当于一批人群。如果push推送消息具有人群标签,那么push推送消息就会变成仅针对这批用户的精准推送。此外,时间控制器会根据人群标签id及对应渠道进行双重校验。在规定的时间节点内,每个渠道只能使用一次相同的人群标签,如果不满足该条件则push设置无效。
[0181]
在一个实施例中,基于所述待推送的消息的推送配置信息、每个推送消息的预定
推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间,包括:基于所述待推送的消息的推送配置信息,确定所述待推送的消息的预定推送时间和推送优先级,其中所述推送优先级包括:紧急事件优先级、高推送优先级和低推送优先级。其中,紧急事件优先级用于表示待推送的消息的内容属于紧急事件,例如,非常重要的新闻、消息或通知等。高推送优先级表示待推送的消息的优先级较高,并且低推送优先级表示待推送的消息的优先级较低。
[0182]
在一个实施例中,将所述待推送的消息的预定推送时间,作为所述待推送的消息在消息推送队列中的初始推送时间。如图4所示,待推送的消息的预定推送时间为11:10,因此可以将待推送的消息在消息推送队列中的初始推送时间设置为11:10。基于所述待推送的消息的推送优先级,确定所述消息推送队列的更新方式。例如,基于推送优先级是紧急事件优先级、高推送优先级或低推送优先级,分别确定消息推送队列的不同的更新方式。
[0183]
具体地,基于所述待推送的消息的推送优先级,确定所述消息推送队列的更新方式,包括:当所述待推送的消息的推送优先级为紧急事件优先级时,确定所述消息推送队列的更新方式为以所述待推送的消息为紧急消息的更新方式。当所述待推送的消息的推送优先级为高推送优先级时,确定所述消息推送队列的更新方式为以所述待推送的消息为基础的更新方式。当所述待推送的消息的推送优先级为低推送优先级时,确定所述消息推送队列的更新方式为以所述消息推送队列中现有的推送消息为基础的更新方式。通过为不同推送优先级的待推送的消息设置不同的消息推送队列的更新方式,能够有效地满足用户对于不同优先级的推送消息的获取需求。
[0184]
在一个实施例中,根据所述消息推送队列的更新方式,并且根据所述待推送的消息的初始推送时间、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间包括:当所述消息推送队列的更新方式为以所述待推送的消息为紧急消息的更新方式,将所述待推送的消息的初始推送时间确定为所述待推送的消息的预定推送时间,并且将现有的每个推送消息的预定推送时间保持不变。如图4所示,用户的消息队列中包括推送消息a、b、c、d和e。当所述待推送的消息k1的推送优先级为紧急事件优先级时,确定所述消息推送队列的更新方式为以所述待推送的消息k1为紧急消息的更新方式。待推送的消息k1的预定推送时间为11:10,因此待推送的消息k1的初始推送时间为11:10。由于,消息推送队列的更新方式为以所述待推送的消息k1为紧急消息的更新方式,因此,将所述紧急事件优先级的待推送的消息k1的初始推送时间11:10确定为所述待推送的消息的预定推送时间,并且将现有的每个推送消息a、b、c、d和e的预定推送时间保持不变。
[0185]
在一个实施例中,所述根据所述消息推送队列的更新方式,并且根据所述待推送的消息的初始推送时间、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间,包括:当所述消息推送队列的更新方式为以所述待推送的消息为基础的更新方式时,将所述待推送的消息的初始推送时间确定为所述待推送的消息的预定推送时间;以所述待推送的消息的预定推送时间为基准,根据现有的每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定现有的每个推送消息的更新的预定推送时间,以使得更新后,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述时间间隔参数中的
时间间隔。
[0186]
如图4所示,用户的消息队列中包括推送消息a、b、c、d和e。当所述待推送的消息k2的推送优先级为高推送优先级时,确定所述消息推送队列的更新方式为以所述待推送的消息k2为基础的更新方式。待推送的消息k2的预定推送时间为11:10,因此待推送的消息k2的初始推送时间为11:10。由于,消息推送队列的更新方式为以所述待推送的消息k2为基础的更新方式,因此,将所述高推送优先级的待推送的消息k2的初始推送时间11:10确定为所述待推送的消息的预定推送时间。
[0187]
在一个实施例中,所述以所述待推送的消息的预定推送时间为基准,根据现有的每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定现有的每个推送消息的更新的预定推送时间,包括:按照预定推送时间与所述待推送的消息从相邻到远离的顺序,基于消息推送队列的时间间隔参数对所述消息推送队列中需要调整预定推送时间的推送消息进行时间调整,确定每个推送消息的更新的预定推送时间。
[0188]
具体地,以待推送的消息k2的预定推送时间11:10为基准,根据现有的推送消息a、b、c、d和e的预定推送时间(9:00、10:00、11:20、11:50和16:00)以及消息推送队列的时间间隔参数(时间间隔30分钟),确定现有的每个推送消息的更新的预定推送时间。例如,现有的推送消息a、b和e的预定推送时间与待推送的消息k2的预定推送时间之间的时间间隔大于30分钟,因此,现有的推送消息a、b和e的更新的预定推送时间是9:00、10:00和16:00,即更新后与更新前在数值上相同。
[0189]
按照预定推送时间与所述待推送的消息从相邻到远离的顺序,基于消息推送队列的时间间隔参数对所述消息推送队列中需要调整预定推送时间的推送消息进行时间调整。具体地,现有的推送消息c的预定推送时间与待推送的消息k2的预定推送时间之间的时间间隔小于30分钟,由于消息推送队列的更新方式为以所述待推送的消息k2为基础的更新方式,因此将现有的推送消息c的更新的预定推送时间确定为11:40。由于现有的推送消息c的更新的预定推送时间确定为11:40,导致现有的推送消息c的更新的预定推送时间与现有的推送消息d的预定推送时间11:50之间的时间间隔小于30分钟,因此,将现有的推送消息d的更新的预定推送时间确定为12:10。依次类推,对待推送的消息k2的预定推送时间之前和之后的需要进行预定推送时间调整的推送消息均进行预定推送时间的更新,以使得更新后,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述时间间隔参数中的时间间隔。
[0190]
在一个实施例中,根据所述消息推送队列的更新方式,并且根据所述待推送的消息的初始推送时间、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间,包括:当所述消息推送队列的更新方式为以所述消息推送队列中现有的推送消息为基础的更新方式时,当所述待推送的消息的初始推送时间与任意推送消息的预定推送时间之间的时间间隔小于时间间隔参数中的时间间隔时,调整所述待推送的消息的预定推送时间,以使得更新后,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述时间间隔参数中的时间间隔。
[0191]
如图4所示,用户的消息队列中包括推送消息a、b、c、d和e。当所述待推送的消息k3的推送优先级为低推送优先级时,确定所述消息推送队列的更新方式为以所述消息推送队
列中现有的推送消息a、b、c、d和e为基础的更新方式。低推送优先级的待推送的消息k3的预定推送时间为11:10,与现有的推送消息c的预定推送时间11:20之间的时间间隔小于时间间隔参数中的时间间隔30分钟。因此,调整所述待推送的消息的预定推送时间为12:20,以使得更新后,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述时间间隔参数中的时间间隔。
[0192]
步骤105,基于所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间对所述消息推送队列进行更新,所述方法还包括:在图形界面中对所述消息推送队列进行显示,并能够根据所接收的输入操作,对所述消息推送队列中任意推送消息的预定推送时间进行修改。
[0193]
具体地,本发明的push推送消息机制在控制推送频率方面,还可以采用消息推送队列的可视化及自动调度。如果当前运营人员在配置push推送消息的推送时间后,仅支持在发送列表看到,则展现方式上不够直观,很多情况下会忽略定时任务或之前已经创建过的周期任务。针对这种情况,本发明采用时间轴的可视化展现页面,对每个时间点的push推送信息进行展示,并且能够根据发送量和不同类型开启默认调度。系统支持根据优先级等因素自动推荐合适的推送时间并根据实际情况调整后续的推送计划,方便用户灵活控制和体验。
[0194]
图5是本发明一示例性实施例提供的对消息进行处理的装置的结构示意图。装置包括:解析单元501、计算单元502、获取单元503、确定单元504、更新单元505、生成单元506、第一创建单元507、第二创建单元508以及显示单元509。
[0195]
解析单元501,用于在接收到待推送的消息时,对所述待推送的消息进行解析以获取所述待推送的消息中的全局标识符、用户标识符和推送配置信息,其中所述推送配置信息包括:预定推送时间和推送优先级。
[0196]
计算单元502,用于基于所述全局标识符,计算与所述待推送的消息相关联的多个数据标识,基于所述多个数据标识,在数据缓存中确定与所述待推送的消息相对应的标志位,基于与所述待推送的消息相对应的标志位的当前值,确定所述待推送的消息是否为重复发送的消息。
[0197]
在一个实施例中,计算单元502包括:
[0198]
计算子单元,用于利用多个映射函数中的每个映射函数对所述全局标识符进行计算,以获得相应的多个映射值;
[0199]
获得子单元,用于基于多个映射值,获得与所述待推送的消息相关联的多个数据标识。
[0200]
可选地,所述获得子单元具体用于将多个映射值中的每个映射值依次序进行取余运算,以获得由多个余数构成的余数序列;按照所述余数序列中的次序,将多个余数作为与所述待推送的消息相关联的多个数据标识。
[0201]
在一个实施例中,计算单元502还包括:
[0202]
第三确定子单元,用于基于所述多个数据标识确定与所述待推送的消息相对应的数组的数组下标;
[0203]
检索子单元,用于根据所述数组下标在所述数据缓存的数组容器中,检索与所述待推送的消息相对应的数组;
[0204]
第四确定子单元,用于根据所述数组的内容值,确定与所述待推送的消息相对应的标志位。
[0205]
在一个实施例中,计算单元502还包括:
[0206]
第五确定子单元,用于当与所述待推送的消息相对应的标志位的当前值为第一数值时,确定所述待推送的消息是重复发送的消息;当与所述待推送的消息相对应的标志位的当前值为第二数值时,确定所述待推送的消息不是重复发送的消息;
[0207]
处理子单元,用于当所述待推送的消息不是重复发送的消息时,将所述待推送的消息放置到相关联的消息推送队列中,并向所述待推送的消息的业务方发送指示消息发送就绪的响应消息;当所述待推送的消息是重复发送的消息时,不将所述待推送的消息放置到相关联的消息推送队列中,并向所述待推送的消息的业务方发送指示消息重复的响应消息。
[0208]
获取单元503,用于当确定所述待推送的消息不是重复推送的消息时,基于所述用户标识符,确定与所述待推送的消息相关联的消息推送队列,并获取所述消息推送队列中每个推送消息的预定推送时间。
[0209]
在一个实施例中,所述获取单元503,包括:
[0210]
第六确定子单元,用于基于所述用户标识符确定作为所述待推送的消息的推送目标的用户;
[0211]
第二获取子单元,用于获取与所述推送目标的用户相关联的消息推送队列,作为与所述待推送的消息相关联的消息推送队列。
[0212]
确定单元504,用于基于所述待推送的消息的推送配置信息、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间。
[0213]
在一个实施例中,确定单元504具体用于:
[0214]
基于所述待推送的消息的推送配置信息,确定所述待推送的消息的预定推送时间和推送优先级,其中所述推送优先级包括:紧急事件优先级、高推送优先级和低推送优先级;
[0215]
将所述待推送的消息的预定推送时间,作为所述待推送的消息在消息推送队列中的初始推送时间;
[0216]
基于所述待推送的消息的推送优先级,确定所述消息推送队列的更新方式;
[0217]
根据所述消息推送队列的更新方式,并且根据所述待推送的消息的初始推送时间、每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间。
[0218]
在一个实施例中,确定单元504具体还用于:
[0219]
当所述待推送的消息的推送优先级为紧急事件优先级时,确定所述消息推送队列的更新方式为以所述待推送的消息为紧急消息的更新方式;
[0220]
当所述待推送的消息的推送优先级为高推送优先级时,确定所述消息推送队列的更新方式为以所述待推送的消息为基础的更新方式;
[0221]
当所述待推送的消息的推送优先级为低推送优先级时,确定所述消息推送队列的更新方式为以所述消息推送队列中现有的推送消息为基础的更新方式。
[0222]
可选地,确定单元具体用于:当所述消息推送队列的更新方式为以所述待推送的消息为紧急消息的更新方式,将所述待推送的消息的初始推送时间确定为所述待推送的消息的预定推送时间,并且将现有的每个推送消息的预定推送时间保持不变。
[0223]
在一个实施例中,确定单元504具体还用于:
[0224]
当所述消息推送队列的更新方式为以所述待推送的消息为基础的更新方式时,将所述待推送的消息的初始推送时间确定为所述待推送的消息的预定推送时间;
[0225]
以所述待推送的消息的预定推送时间为基准,根据现有的每个推送消息的预定推送时间以及消息推送队列的时间间隔参数,确定现有的每个推送消息的更新的预定推送时间,以使得更新后,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述时间间隔参数中的时间间隔。
[0226]
在一个实施例中,确定单元504具体还用于:
[0227]
按照预定推送时间与所述待推送的消息从相邻到远离的顺序,基于消息推送队列的时间间隔参数对所述消息推送队列中需要调整预定推送时间的推送消息进行时间调整,确定每个推送消息的更新的预定推送时间。
[0228]
在一个实施例中,确定单元504具体还用于:
[0229]
当所述消息推送队列的更新方式为以所述消息推送队列中现有的推送消息为基础的更新方式时,当所述待推送的消息的初始推送时间与任意推送消息的预定推送时间之间的时间间隔小于时间间隔参数中的时间间隔时,调整所述待推送的消息的预定推送时间,以使得更新后,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述时间间隔参数中的时间间隔。
[0230]
更新单元505,用于基于所述待推送的消息的预定推送时间和每个推送消息的更新的预定推送时间对所述消息推送队列进行更新。
[0231]
生成单元506,用于基于数据源中的数据内容生成所述待推送的消息;生成用于标识所述待推送的消息的全局唯一键值,并在所述待推送的消息中附加所述全局唯一键值。
[0232]
在一个实施例中,生成单元505包括:
[0233]
第一获取子单元,用于获取所述待推送的消息的业务标识和事物标识,其中所述业务标识用于标识所述待推送的消息所归属的业务类型,所述事物标识用于标识所述待推送的消息的事物名称;
[0234]
第一确定子单元,用于确定在所述数据源中生成所述待推送的消息的生成时间;
[0235]
生成子单元,用于基于所述业务标识、事物标识和生成时间,生成用于标识所述待推送的消息的全局唯一键值。
[0236]
在一个实施例中,生成单元505还包括:
[0237]
第二确定子单元,用于促使业务方从所述数据源提取所述待推送的消息,确定所述待推送的消息的目标用户;
[0238]
解析子单元,用于对所述待推送的消息进行解析,以获取所述全局唯一键值;
[0239]
附加子单元,用于基于所述待推送的消息的全局唯一键值和所述目标用户的用户标识符,生成所述待推送的消息的全局标识符,并将所述全局标识符附加到所述待推送的消息中。
[0240]
在一个实施例中,所述生成单元505,还用于基于数据源中的数据内容生成所述待
推送的消息;确定作为所述待推送的消息的推送目标的用户,并获取作为推送目标的用户的用户标识符;基于所述待推送的消息的数据内容确定推送配置信息;在所述待推送的消息中附加相应的用户标识符和推送配置信息。
[0241]
第一创建单元507,用于在所述数据缓存中创建数组容器,为所述数组容器中的每个数组设置预定数量的数组下标,其中所述预定数量与数据标识的数量相同。
[0242]
第二创建单元508,用于为用户创建相关联的消息推送队列;基于用户预先设置的配置文件,确定与用户相关联的所述消息推送队列的时间间隔参数。
[0243]
可选地,其中,在所述消息推送队列中,任意两个时间上相邻的推送消息的预定推送时间之间的时间间隔,大于或等于所述消息推送队列的时间间隔参数中的时间间隔。
[0244]
显示单元509,用于在图形界面中对所述消息推送队列进行显示,并能够根据所接收的输入操作,对所述消息推送队列中任意推送消息的预定推送时间进行修改。
[0245]
本发明一示例性实施例提供了一种电子设备,该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。图6是本发明一示例性实施例提供的电子设备的示意图。如图6所示,电子设备600包括一个或多个处理器610和存储器620。
[0246]
处理器610可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
[0247]
存储器620可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器610可以运行所述程序指令,以实现上文所述的本发明的各个实施例的软件程序的对消息进行处理的方法以及/或者其他期望的功能。在一个示例中,电子设备还可以包括:输入装置630和输出装置640,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
[0248]
此外,该输入装置630还可以包括例如键盘、鼠标等等。
[0249]
该输出装置640可以向外部输出各种信息。该输出装置640可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
[0250]
当然,为了简化,图6中仅示出了该电子设备中与本发明有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。
[0251]
示例性计算机程序产品和计算机可读存储介质除了上述方法和设备以外,本发明的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的对消息进行处理的方法中的步骤。
[0252]
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软
件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
[0253]
此外,本发明的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的对消息进行处理的方法中的步骤。
[0254]
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0255]
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,在本发明中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明为必须采用上述具体的细节来实现。
[0256]
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0257]
本发明中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
[0258]
可能以许多方式来实现本发明的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
[0259]
还需要指出的是,在本发明的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
[0260]
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技
术人员将认识到其某些变型、修改、改变、添加和子组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1