CN116405547A - 消息推送方法、装置及处理器、电子设备、存储介质 - Google Patents
消息推送方法、装置及处理器、电子设备、存储介质 Download PDFInfo
- Publication number
- CN116405547A CN116405547A CN202310244377.0A CN202310244377A CN116405547A CN 116405547 A CN116405547 A CN 116405547A CN 202310244377 A CN202310244377 A CN 202310244377A CN 116405547 A CN116405547 A CN 116405547A
- Authority
- CN
- China
- Prior art keywords
- message
- push message
- pushing
- pushed
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000003860 storage Methods 0.000 title claims abstract description 14
- 230000015654 memory Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012544 monitoring process Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000004519 manufacturing process Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 abstract description 34
- 238000012545 processing Methods 0.000 abstract description 12
- 238000007726 management method Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000005538 encapsulation Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 6
- 241000533950 Leucojum Species 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000002354 daily effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2871—Implementation details of single intermediate entities
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了消息推送方法、装置及处理器、电子设备、及存储介质。其中,所述方法包括:响应消息推送请求,生成携带唯一标识的待推送的推送消息;将所述推送消息添加至生产者队列,并上传至服务端进行地址解析;从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,得到目标推送消息;将所述目标推送消息添加至相应的地址对应的通道,并统一推送至接收方客户端。本发明能够提高通道的重复利用率,降低连接通道的开销成本,提升服务通讯并发处理能力。
Description
技术领域
本发明涉及信息处理技术领域,尤其涉及消息推送方法、装置及处理器、电子设备、及存储介质。
背景技术
推送是一种服务器和客户端之间的通信方式。通常情况下,为实现服务之间进行异步通信,即使某个服务暂时不可用,恢复后仍可继续处理,各个服务之间基于消息队列(MQ)进行通讯。而常用的MQ多为开源框架,需要选择消息推送中间件来完成组件适配,以此来实现服务之间的通讯。
在对现有技术的研究和实践中,本申请的发明人发现,使用当前的TongHtp作为框架中间件时,通道重复利用率较低致使开销成本并发处理能力不足,在各类信息源之间不同种类信息之间并不互通,存在消息冗余,推送消息不能精准触达目标用户,以及系统不稳定等问题。
发明内容
为了解决上述提出的至少一个技术问题,本发明提供一种消息推送方法、装置及处理器、电子设备、及存储介质。
第一方面,提供了一种消息推送方法,所述方法包括:响应消息推送请求,生成携带唯一标识的待推送的推送消息;将所述推送消息添加至生产者队列,并上传至服务端进行地址解析;从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,得到目标推送消息;将所述目标推送消息添加至相应的地址对应的通道,并统一推送至接收方客户端。
在该方面中,通过对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,保证了服务通讯间的幂等性。通过将所述目标推送消息添加至相应的地址对应的通道,并统一推送至接收方客户端,能够提高通道的重复利用率,降低连接通道的开销成本,提升服务通讯并发处理能力,使得消息推送中间件的高可用支撑系统业务的稳定与高可用。
在一种可能实现的方式中,所述消息推送方法还包括:周期性监测客户端与服务端的连接状态;在监测到所述客户端与所述服务端的未连接状态的时长大于第一预设时长阈值时,发送心跳消息至所述服务端,促使所述客户端与所述服务端维持连接状态。
在该种可能实现的方式中,相当于做了一个通讯框架的封装,包括心跳维持连接、消息去重等功能,提供分布式服务的通讯接口。通过客户端连接池监测和发送心跳信息来维持客户端与服务端的连接状态,可以确保连接通道被有效地重复利用。
在一种可能实现的方式中,所述从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,得到目标推送消息,包括:从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较;若待推送的推送消息与本地消息重复,则丢弃该待推送的推送消息;若待推送的推送消息与本地消息不重复,则将该待推送的推送消息作为目标推送消息。
在该种可能实现的方式中,基于待推送的推送消息携带的唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,将重复的消息丢弃,以有效避免消息推送过程中的重复请求、重复消费等问题,保证了服务通讯间的幂等性。
进一步地,目前的系统中可能出现的因推送消息服务质量不稳定,易波动,导致开发者发送给系统的消息无法下发到用户设备,最终消息丢失;为解决这一问题,及时备份推送消息,在消息丢失后能够被找回,并且在用户设备接收到这些被备份的历史推送消息时,能够主动对收到的消息进行去重,避免相同消息重复接收。
在一种可能实现的方式中,所述从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,包括:根据预设优先级,将从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,其中,所述预设优先级为时间优先。
在该种可能实现的方式中,采用优先级队列方案,在一定程度上能够解决消息下发场景中面临的任务大小不一、下发量大、时延低的问题,同时也能够解决消息回执场景中面临的回执响应时间不一、优先级需实时调整的问题。
在一种可能实现的方式中,在将所述目标推送消息添加至相应的地址对应的通道,并统一推送至接收方客户端之后,还包括:根据第二预设时长查询是否接收到所述接收方客户端返回的所述目标推送消息送达的通知,得到查询结果;根据所述查询结果判断是否再次将所述目标推送消息推送至所述接收方客户端。
在该种可能实现的方式中,由于目前服务通讯系统并没有提供重发机制,开发者也没有对消息进行备份,因此容易出现消息丢失后无法找回的问题;为解决这一技术问题,在发送推送消息后,如果在指定时间内没有收到接收方客户端返回的目标推送消息送达的通知,将重发相同的消息,提高接收方客户端收到消息的可能性。
第二方面,提供了一种消息推送装置,所述装置包括:生产单元,用于响应消息推送请求,生成携带唯一标识的待推送的推送消息,并将所述推送消息添加至生产者队列,并上传至服务端进行地址解析;消费单元,用于从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,得到目标推送消息;推送单元,用于将所述目标推送消息添加至相应的地址对应的通道,并统一推送至接收方客户端。
在一种可能实现的方式中,所述生产单元,还用于周期性监测客户端与服务端的连接状态,在监测到所述客户端与所述服务端的未连接状态的时长大于第一预设时长阈值时,发送心跳消息至所述服务端,促使所述客户端与所述服务端维持连接状态。
在一种可能实现的方式中,所述消费单元,用于从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较;若待推送的推送消息与本地消息重复,则丢弃该待推送的推送消息;若待推送的推送消息与本地消息不重复,则将该待推送的推送消息作为目标推送消息。
在一种可能实现的方式中,所述推送单元,用于根据预设优先级,将从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,其中,所述预设优先级为时间优先。
在一种可能实现的方式中,所述推送单元,还用于根据第二预设时长阈值查询是否接收到所述接收方客户端返回的所述目标推送消息送达的通知,得到查询结果,根据所述查询结果判断是否再次将所述目标推送消息推送至所述接收方客户端。
第三方面,提供了一种处理器,所述处理器用于执行如上述第一方面及其任意一种可能实现的方式的方法。
第四方面,提供了一种电子设备,包括:处理器、发送装置、输入装置、输出装置和存储器,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,所述电子设备执行如上述第一方面及其任意一种可能实现的方式的方法。
第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被电子设备的处理器执行时,使所述处理器执行如上述第一方面及其任意一种可能实现的方式的方法。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1为本申请实施例提供的一种消息推送方法的流程示意图;
图2为本申请实施例提供的另一种消息推送方法的流程示意图;
图3为该实施例提供的将修改后的TongHtp客户端集成到ums统一推送系统框架的示意图;
图4为本申请实施例提供的一种消息推送装置的结构示意图;
图5为本申请实施例提供的一种消息推送装置的硬件结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
另外,为了更好地说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样能够实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
现有技术中,为支持水平扩展部署系统,需要根据具体业务拆分为多个小型分布式服务,业务间的方法调用则改为服务间的通讯。为实现服务之间进行异步通信,即使某个服务暂时不可用,恢复后仍可继续处理,各个服务之间基于消息队列(MQ)进行通讯。而常用的MQ多为开源框架,通过组件适配,可选择TongHTP消息总线中间件。通过对TongHTP客户端程序进行修改封装,实现基于TongHTP进行服务间点对点通讯以及发布订阅模式的通讯框架。
请参阅图1,图1为本申请实施例(一)提供的一种消息推送方法的流程示意图。
S101、响应消息推送请求,生成携带唯一标识的待推送的推送消息。
在一种可能实现的方式中,每条消息的唯一标识是使用雪花算法生成的UUID。其中,UUID是通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。因此,UUID性能非常高:本地生成,没有网络消耗,如果只考虑唯一性UUID是ok的。
上述雪花算法的原理是生成一个的64位比特位的long类型的唯一id。最高1位固定值0,因为生成的id是正整数,如果是1就是负数了。接下来41位存储毫秒级时间戳,2^41/(1000*60*60*24*365)=69,大概可以使用69年。再接下10位存储机器码,包括5位datacenterId和5位workerId。最多可以部署2^10=1024台机器。最后12位存储序列号。同一毫秒时间戳时,通过这个递增的序列号来区分。即对于同一台机器而言,同一毫秒时间戳下,可以生成2^12=4096个不重复id。可以将雪花算法作为一个单独的服务进行部署,然后需要全局唯一id的系统,请求雪花算法服务获取id即可。对于每一个雪花算法服务,需要先指定10位的机器码,这个根据自身业务进行设定即可。例如机房号+机器号,机器号+服务号,或者是其他可区别标识的10位比特位的整数值。
S102、将所述推送消息添加至生产者队列,并上传至服务端进行地址解析。
在该实施例中,所述推送消息可以是消息推送系统内的生产者程序所产生的,以通过消息推送系统实现推送消息的产生及推送。所述生产者程序可以为一个,也可以为多个,当所述生产者程序为多个时,可以在消息推送系统内存储应用列表,以保存应用信息。所述应用列表可以保存在消息推送系统的数据库内,所述应用信息可以包括所述应用包名和验证的key。或者,所述推送消息的生产者程序也可以设置在服务端,以通过服务端产生推送消息并通过消息推送系统实现消息的推送。
服务端对生产者队列上传的推送消息进行地址解析,以确定待推送的推送消息对应的接收方客户端,即查找到待推送的推送消息对应的目标接收方客户端及对应的IP地址段,根据所述IP地址段确定所述推送消息对应的消费者队列。继而使得待推送的推送消息能够被添加至地址对应的通道,并统一推送至接收方客户端。
S103、从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,得到目标推送消息。
在一种可能实现的方式中,消息推送系统可以包括多个消费者队列以及多个推送服务器,各消费者队列与对应的推送服务器绑定。例如:可以在各推送服务器开启推送服务时,同时开启对应的消费者消息队列,每个推送服务器对应2个消费者队列,其中一个以服务器作为标识命名作为点对点接受推送消息,另一个队列为绑定一个特定的触发器的队列,用于广播和一对多的推送消息的发送。
为了避免相同消息被重复接收,需要基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息(备份的历史推送消息)进行比较去重,即能够主动对收到的消息进行去重。
在一种可能实现的方式中,所述从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,得到目标推送消息,包括:从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较;若待推送的推送消息与本地消息重复,则丢弃该待推送的推送消息;若待推送的推送消息与本地消息不重复,则将该待推送的推送消息作为目标推送消息。
在该种可能实现的方式中,基于待推送的推送消息携带的唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,将重复的消息丢弃,以有效避免消息推送过程中的重复请求、重复消费等问题,保证了服务通讯间的幂等性。
进一步地,目前的系统中可能出现的因推送消息服务质量不稳定,易波动,导致开发者发送给系统的消息无法下发到用户设备,最终消息丢失;为解决这一问题,及时备份推送消息,在消息丢失后能够被找回,并且在用户设备接收到这些被备份的历史推送消息时,能够主动对收到的消息进行去重,避免相同消息重复接收。
在一种可能实现的方式中,所述从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,包括:根据预设优先级,将从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列。
其中,所述预设优先级为时间优先。即根据生产和消费的时间来堆叠或插入待推送的推送消息。
在日常消息推送过程中,以个推为例,往往需要应对来自以下四方面的挑战。高并发:单台服务器在每日高峰时段需要响应百万级并发量请求;低延迟:需毫秒级响应推送请求,保障亿级消息秒级送达;海量数据:需在每日百亿级推送下发请求中,实现消息的实时下发;海量用户:需要在个推业务层中对外标识的百亿用户里快速筛选出符合推送条件的目标群体进行消息下发。
当同时有多个App进行消息下发时,难免会出现资源竞争的情况,因此就产生了优先级队列的需求:在下发资源固定的情况下,高优先级的用户需要有更多的下发资源。基于此,在个推采用基于Kafka的优先级队列方案时,能够解决消息下发场景中面临的任务大小不一、下发量大、时延低的问题;在个推采用基于Pulsar的优先级队列方案时,能够解决消息回执场景中面临的回执响应时间不一、优先级需实时调整的问题。
在该种可能实现的方式中,采用优先级队列方案,在一定程度上能够解决消息下发场景中面临的任务大小不一、下发量大、时延低的问题,同时在一定程度上也能够解决消息回执场景中面临的回执响应时间不一、优先级需实时调整的问题。
S104、将所述目标推送消息添加至相应的地址对应的通道,并统一推送至接收方客户端。
其中,为了将消息推送系统设计为统一消息系统,需要整合例如APP、微信公众号、微信小程序、短信、邮件、支付宝生活号、钉钉等消息通道(将所述目标推送消息添加至相应的地址对应的通道),通过灵活的发送路由策略管理,在降低成本的同时,为行业用户提供多通道合一的统一消息发送服务,将消息通过多通道及时送达目标人群,并提供整合渠道、通道、用户多维度的统计报表,助力企业实现智能化运营及决策。换句话说,统一消息系统在各类信息源之间充当着桥梁的作用,能够实现不同种类信息之间的互通整合,化繁为简,统一通道管理及分发。
在该方面中,通过对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,保证了服务通讯间的幂等性。通过将所述目标推送消息添加至相应的地址对应的通道,并统一推送至接收方客户端,能够提高通道的重复利用率,降低连接通道的开销成本,提升服务通讯并发处理能力,使得消息推送中间件的高可用支撑系统业务的稳定与高可用。
请参阅图2,图2为本申请实施例(二)提供的一种消息推送方法的流程示意图。
S105、根据第二预设时长阈值查询是否接收到所述接收方客户端返回的所述目标推送消息送达的通知,得到查询结果;
S106、根据所述查询结果判断是否再次将所述目标推送消息推送至所述接收方客户端。
其中,第二预设时长阈值优选为30s,可以理解的是,第二预设时长阈值还可以为40s、60s或90s等。
在该种可能实现的方式中,由于目前服务通讯系统并没有提供重发机制,开发者也没有对消息进行备份,因此容易出现消息丢失后无法找回的问题;为解决这一技术问题,在发送推送消息后,如果在指定时间内没有收到接收方客户端返回的目标推送消息送达的通知,将重发相同的消息,提高接收方客户端收到消息的可能性。
在一种可能实现的方式中,所述消息推送方法还包括:周期性监测客户端与服务端的连接状态;在监测到所述客户端与所述服务端的未连接状态的时长大于第一预设时长阈值时,发送心跳消息至所述服务端,促使所述客户端与所述服务端维持连接状态。
其中,第一预设时长阈值优先为120s,可以理解的是,第一预设时长阈值还可以为其他自定义时长。
在该种可能实现的方式中,相当于做了一个通讯框架的封装,包括心跳维持连接、消息去重等功能,提供分布式服务的通讯接口。通过客户端连接池监测和发送心跳信息来维持客户端与服务端的连接状态,可以确保连接通道被有效地重复利用。
请参阅图3,图3为该实施例提供的将修改后的TongHtp客户端集成到ums统一推送系统框架的示意图。
在该可能实现的方式中,将修改后的TongHtp客户端集成到ums统一推送系统框架中,实现框架需要支持的并包处理逻辑,通过修改配置将各处业务通讯调用切换到TongHtp。在消息推送的具体实施方式中,用户调用api推送消息,ums api模块收到请求后发送给umstask,生成唯一标识并设置为消息的属性,由客户端连接池的生产者发送到TongHtp服务端,并更新连接使用时间。客户端连接池每30秒读取连接池所有连接信息,判断连接上次使用间隔超过120秒,则会立刻发送一个心跳,消费者收到心跳消息后,服务端会维持对应连接。umstask消费者拉取到消息,使用消息的唯一标识查询redis,如果存在则为重复消息,丢弃,否则进行相应的业务处理,同理,处理完成后发送给下游的sender发送到对应的通道,完成推送。
在该实施例中,将修改后的TongHtp客户端集成到ums统一推送系统框架,可以理解为一个高速传输平台TongHTP。TongHTP服务端由TongHTP管理节点、TongHTP工作节点、开发接口、Web控制台四部分组成。其中,TongHTP工作节点是TongHTP在一台物理机器上的一套运行环境,主要由相关的配置文件、核心进程、主题、队列组成,提供基于队列的消息传输服务。TongHTP管理节点提供服务注册、服务发现、对集群中各工作节点的运行状态和负载情况的监控、集中存储集群状态信息、统一管理集群工作节点配置、集群队列负载均衡以及连接安全、日志和本地核心进程监控。开发接口是TongHTP提供的一组强大的API包,应用开发人员使用它能够轻松完成消息的传递和系统的维护管理。通过Web管理控制台对运行环境进行配置和监控管理,对所有TongHTP节点提供集中式的远程管理。
在该可能实现的方式中,在ums统一推送系统框架中:
生产者将消息发送到Broker端有三种方式,同步、异步和批量,都可以保证消息成功的发送,从而实现发送方式多样;
发布订阅的业务场景下,消息支持回溯消费,对于已经消费成功的消息或者消费失败的消息在一定的时间段内存储,等待某一时间内该消息被重新消费;
提供动态配置功能,用户可以使用管理工具对系统的配置参数进行动态调整,调整后的配置信息能够在运行系统中立即生效,而无需重新启动系统;
队列模式下提供了消息确认机制,应用从工作节点接收一条消息后,消息并未被删除,消息状态为“等待确认”,只有应用主动确认提交(或回滚)时,消息才会被删除。支持通过API调用,创建、查询消息监控指标等。管理控制台上进行的操作用于主题的创建、查看、运维监控等管理工作。
基于此,上述实施例能够整合例如APP、微信公众号、微信小程序、短信、邮件、支付宝生活号、钉钉等多个消息通道,通过灵活的发送路由策略管理,在降低成本的同时,为行业用户提供多通道合一的统一消息发送服务,将消息通过多通道及时送达目标人群,并提供整合渠道、通道、用户多维度的统计报表,助力企业实现智能化运营及决策。换句话说,能够在各类信息源之间充当着桥梁的作用,能够实现不同种类信息之间的互通整合,化繁为简,统一通道管理及分发。
从而避免了现有技术中每增加一种通道或一个有消息下发需求的业务系统,都需要开发者重复对接,浪费研发时间及资源,增加维护成本。通过ums统一推送系统框架,多个消息通道即刻整合为1个平台,企业仅需对接这1个平台,适配1个接口协议,即可解决重复对接多通道、消息到达率低、短信成本高等问题。此外,ums接口具备扩展性,无需任何改动,即可实现消息通道的横向扩充,未来还将陆续支持5G消息、支付宝小程序、字节跳动小程序、企业微信、飞书等更多通道。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的装置。
请参阅图4,图4为本申请实施例提供的一种消息推送装置的结构示意图。
一种消息推送装置,包括:生产单元100、消费单元200和推送单元300。
所述生产单元100,用于响应消息推送请求,生成携带唯一标识的待推送的推送消息,并将所述推送消息添加至生产者队列,并上传至服务端进行地址解析;所述消费单元200,用于从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,得到目标推送消息;所述推送单元300,用于将所述目标推送消息添加至相应的地址对应的通道,并统一推送至接收方客户端。
在该实施例中,通过对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,保证了服务通讯间的幂等性。通过将所述目标推送消息添加至相应的地址对应的通道,并统一推送至接收方客户端,能够提高通道的重复利用率,降低连接通道的开销成本,提升服务通讯并发处理能力,使得消息推送中间件的高可用支撑系统业务的稳定与高可用。
在一种可能实现的方式中,所述生产单元100,还用于周期性监测客户端与服务端的连接状态,在监测到所述客户端与所述服务端的未连接状态的时长大于第一预设时长阈值时,发送心跳消息至所述服务端,促使所述客户端与所述服务端维持连接状态。
在该种可能实现的方式中,相当于做了一个通讯框架的封装,包括心跳维持连接、消息去重等功能,提供分布式服务的通讯接口。通过客户端连接池监测和发送心跳信息来维持客户端与服务端的连接状态,可以确保连接通道被有效地重复利用。
在一种可能实现的方式中,所述消费单元200,用于从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较;若待推送的推送消息与本地消息重复,则丢弃该待推送的推送消息;若待推送的推送消息与本地消息不重复,则将该待推送的推送消息作为目标推送消息。
在该种可能实现的方式中,基于待推送的推送消息携带的唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,将重复的消息丢弃,以有效避免消息推送过程中的重复请求、重复消费等问题,保证了服务通讯间的幂等性。
进一步地,目前的系统中可能出现的因推送消息服务质量不稳定,易波动,导致开发者发送给系统的消息无法下发到用户设备,最终消息丢失;为解决这一问题,及时备份推送消息,在消息丢失后能够被找回,并且在用户设备接收到这些被备份的历史推送消息时,能够主动对收到的消息进行去重,避免相同消息重复接收。
在一种可能实现的方式中,所述推送单元300,用于根据预设优先级,将从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,其中,所述预设优先级为时间优先。
在一种可能实现的方式中,所述推送单元300,还用于根据第二预设时长查询是否接收到所述接收方客户端返回的所述目标推送消息送达的通知,得到查询结果,根据所述查询结果判断是否再次将所述目标推送消息推送至所述接收方客户端。
在该种可能实现的方式中,由于目前服务通讯系统并没有提供重发机制,开发者也没有对消息进行备份,因此容易出现消息丢失后无法找回的问题;为解决这一技术问题,在发送推送消息后,如果在指定时间内没有收到接收方客户端返回的目标推送消息送达的通知,将重发相同的消息,提高接收方客户端收到消息的可能性。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本申请还提供了一种处理器,所述处理器用于执行如上述任意一种可能实现的方式的方法。
本申请还提供了一种电子设备,包括:处理器、发送装置、输入装置、输出装置和存储器,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,所述电子设备执行如上述任意一种可能实现的方式的方法。
本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被电子设备的处理器执行时,使所述处理器执行如上述任意一种可能实现的方式的方法。
请参阅图5,图5为本申请实施例提供的一种消息推送装置的硬件结构示意图。
该自动化测试装置2包括处理器21,存储器22,输入装置23,输出装置24。该处理器21、存储器22、输入装置23和输出装置24通过连接器相耦合,该连接器包括各类接口、传输线或总线等等,本申请实施例对此不作限定。应当理解,本申请的各个实施例中,耦合是指通过特定方式的相互联系,包括直接相连或者通过其他设备间接相连,例如可以通过各类接口、传输线、总线等相连。
处理器21可以是一个或多个图形处理器(graphics processing unit,GPU),在处理器21是一个GPU的情况下,该GPU可以是单核GPU,也可以是多核GPU。可选的,处理器21可以是多个GPU构成的处理器组,多个处理器之间通过一个或多个总线彼此耦合。可选的,该处理器还可以为其他类型的处理器等等,本申请实施例不作限定。
存储器22可用于存储计算机程序指令,以及用于执行本申请方案的程序代码在内的各类计算机程序代码。可选地,存储器包括但不限于是随机存储记忆体(random accessmemory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasableprogrammable read only memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM),该存储器用于相关指令及数据。
输入装置23用于输入数据和/或信号,以及输出装置24用于输出数据和/或信号。输出装置23和输入装置24可以是独立的器件,也可以是一个整体的器件。
可理解,本申请实施例中,存储器22不仅可用于存储相关指令,本申请实施例对于该存储器中具体所存储的数据不作限定。
可以理解的是,图5仅仅示出了一种自动化测试装置的简化设计。在实际应用中,自动化测试装置还可以分别包含必要的其他元件,包含但不限于任意数量的输入/输出装置、处理器、存储器等,而所有可以实现本申请实施例的视频解析装置都在本申请的保护范围之内。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。所属领域的技术人员还可以清楚地了解到,本申请各个实施例描述各有侧重,为描述的方便和简洁,相同或类似的部分在不同实施例中可能没有赘述,因此,在某一实施例未描述或未详细描述的部分可以参见其他实施例的记载。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriberline,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital versatiledisc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:只读存储器(read-only memory,ROM)或随机存储存储器(random access memory,RAM)、磁碟或者光盘等各种可存储程序代码的介质。
Claims (10)
1.一种消息推送方法,其特征在于,所述方法包括:
响应消息推送请求,生成携带唯一标识的待推送的推送消息;
将所述推送消息添加至生产者队列,并上传至服务端进行地址解析;
从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,得到目标推送消息;
将所述目标推送消息添加至相应的地址对应的通道,并统一推送至接收方客户端。
2.根据权利要求1所述的方法,其特征在于,所述方法包括:
周期性监测客户端与服务端的连接状态;
在监测到所述客户端与所述服务端的未连接状态的时长大于第一预设时长阈值时,发送心跳消息至所述服务端,促使所述客户端与所述服务端维持连接状态。
3.根据权利要求1所述的方法,其特征在于,所述从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,得到目标推送消息,包括:
从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较;
若待推送的推送消息与本地消息重复,则丢弃该待推送的推送消息;
若待推送的推送消息与本地消息不重复,则将该待推送的推送消息作为目标推送消息。
4.根据权利要求1或3所述的方法,其特征在于,所述从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,包括:
根据预设优先级,将从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,其中,所述预设优先级为时间优先。
5.根据权利要求1所述的方法,其特征在于,在将所述目标推送消息添加至相应的地址对应的通道,并统一推送至接收方客户端之后,还包括:
根据第二预设时长阈值查询是否接收到所述接收方客户端返回的所述目标推送消息送达的通知,得到查询结果;
根据所述查询结果判断是否再次将所述目标推送消息推送至所述接收方客户端。
6.一种消息推送装置,其特征在于,所述装置包括:
生产单元,用于响应消息推送请求,生成携带唯一标识的待推送的推送消息,并将所述推送消息添加至生产者队列,并上传至服务端进行地址解析;
消费单元,用于从所述服务器端获取被解析后的待推送的推送消息添加至消费者队列,基于所述唯一标识对所述消费者队列中的待推送的推送消息与本地消息进行比较去重,得到目标推送消息;
推送单元,用于将所述目标推送消息添加至相应的地址对应的通道,并统一推送至接收方客户端。
7.根据权利要求6所述的装置,其特征在于,所述生产单元,还用于周期性监测客户端与服务端的连接状态;在监测到所述客户端与所述服务端的未连接状态的时长大于第一预设时长阈值时,发送心跳消息至所述服务端,促使所述客户端与所述服务端维持连接状态。
8.一种处理器,其特征在于,所述处理器用于执行如权利要求1至5中任意一项所述的方法。
9.一种电子设备,其特征在于,包括:处理器、发送装置、输入装置、输出装置和存储器,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,所述电子设备执行如权利要求1至5中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被电子设备的处理器执行时,使所述处理器执行权利要求1至5中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310244377.0A CN116405547A (zh) | 2023-03-06 | 2023-03-06 | 消息推送方法、装置及处理器、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310244377.0A CN116405547A (zh) | 2023-03-06 | 2023-03-06 | 消息推送方法、装置及处理器、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116405547A true CN116405547A (zh) | 2023-07-07 |
Family
ID=87016957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310244377.0A Pending CN116405547A (zh) | 2023-03-06 | 2023-03-06 | 消息推送方法、装置及处理器、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116405547A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117234709A (zh) * | 2023-08-31 | 2023-12-15 | 广州市玄武无线科技股份有限公司 | 一种基于消息中间件的去重方法、系统、设备和介质 |
-
2023
- 2023-03-06 CN CN202310244377.0A patent/CN116405547A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117234709A (zh) * | 2023-08-31 | 2023-12-15 | 广州市玄武无线科技股份有限公司 | 一种基于消息中间件的去重方法、系统、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2023520851A (ja) | ブロックチェーンメッセージ処理方法、装置、コンピュータデバイスおよびコンピュータプログラム | |
CN107465767B (zh) | 一种数据同步的方法和系统 | |
WO2021121370A1 (zh) | 用于消息队列的消息丢失检测方法和装置 | |
US8224886B2 (en) | System for an open architecture deployment platform with centralized synchronization | |
CN101188566B (zh) | 一种集群环境下数据缓存同步的方法及系统 | |
EP2248311B1 (en) | Method and system for message delivery in messaging networks | |
CN105472042A (zh) | Web端控制的消息中间件系统及其数据传送方法 | |
US8812718B2 (en) | System and method of streaming data over a distributed infrastructure | |
CN103023857A (zh) | 一种信息资源远程部署的方法及系统 | |
CN116405547A (zh) | 消息推送方法、装置及处理器、电子设备、存储介质 | |
US7788330B2 (en) | System and method for processing data associated with a transmission in a data communication system | |
CN111416823A (zh) | 一种数据传输方法和装置 | |
CN108259605B (zh) | 一种基于多数据中心的数据调用系统及方法 | |
CN113612811B (zh) | 一种在多通道中客户端挂载的方法、系统、设备及介质 | |
CN115225482A (zh) | 一种基于Kubernetes进行Pod容器网络配置的方法及装置 | |
CN111756836B (zh) | 一种基于事件管理模型的信息发送方法及装置 | |
CN113687962A (zh) | 一种请求处理方法、装置、设备及存储介质 | |
CN114598662A (zh) | 消息队列集群联邦管理系统以及方法 | |
CN114900449A (zh) | 一种资源信息管理方法、系统及装置 | |
CN111083182B (zh) | 分布式物联网设备管理方法及装置 | |
CN113254097A (zh) | 配置信息的下发方法和装置、电子设备和存储介质 | |
CN111541667A (zh) | 一种系统间消息通信的方法、设备、存储介质 | |
CN114428682B (zh) | 一种超时任务处理方法、系统、存储介质及设备 | |
CN117135156B (zh) | 一种基于发布/订阅消息协议的边缘集群纳管方法、系统、计算机可读存储介质和电子设备 | |
CN113055493B (zh) | 数据包处理方法、装置、系统、调度设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |