CN116436861A - 消息发送方法及装置、存储介质及电子装置 - Google Patents
消息发送方法及装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN116436861A CN116436861A CN202310326292.7A CN202310326292A CN116436861A CN 116436861 A CN116436861 A CN 116436861A CN 202310326292 A CN202310326292 A CN 202310326292A CN 116436861 A CN116436861 A CN 116436861A
- Authority
- CN
- China
- Prior art keywords
- message
- delay
- target
- time
- consumer
- 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 41
- 230000001934 delay Effects 0.000 claims abstract description 8
- 230000003111 delayed effect Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000010411 cooking Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
Images
Classifications
-
- 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
- H04L47/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
- H04L47/265—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets sent by intermediate network nodes
-
- 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/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- 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)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种消息发送方法及装置、存储介质及电子装置,涉及智慧家庭技术领域,该消息发送方法包括:根据指定延时时长确定延时消息的消息头,其中,指定延时时长为消息消费方延时消费延时消息的延时时长,消息头中包括目标延时等级和延时消息的消费时刻,指定延时时长大于目标延时等级对应的目标延时时长;通过目标消息中间件将携带消息头的延时消息发送至消息消费方,其中,目标消息中间件在每一次接收到延时消息时,均根据目标延时等级将延时消息延时传递至消息消费方;在消息消费方确定当前不满足消费延时消息的预设条件的情况下,指示消息消费方重新确定消息头中的目标延时等级,并再次将携带消息头的延时消息传递至目标消息中间件。
Description
技术领域
本申请涉及智慧家庭技术领域,具体而言,涉及一种消息发送方法及装置、存储介质及电子装置。
背景技术
目前开源的RocketMQ自带延时消息实现,消息生产方在发送消息的时候指定消息延时等级即可,目前支持的延时等级共有十八个等级,等级1对应的延时时间是1秒,等级18对应的延时时间是2小时。但目前开源的RocketMQ无法支持自定义消息延时,消息生产方只能使用RocketMQ已经定义好的延时等级,但消息生产者在使用RocketMQ默认的延时等级主要存在两个问题:(1)默认延时等级对于时间划分比较粗粒度,比如通过延时等级可以实现20分钟、30分钟的延时,但无法实现40分钟、50分钟的延时;(2)最高的延时等级对应的延时是2小时,如果有业务场景需要用到3小时延时消息,那默认的延时等级是无法实现的,而在实际的业务场景中用到超过2小时的延时消息并不少见。
针对相关技术中,使用目前的消息中间件无法自定义任意时间的延时消息的问题,目前尚未提出有效的解决方案。
因此,有必要对相关技术予以改良以克服相关技术中的所述缺陷。
发明内容
本申请实施例提供了一种消息发送方法及装置、存储介质及电子装置,以至少解决使用目前的消息中间件无法自定义任意时间的延时消息的问题。
根据本申请实施例的一方面,提供一种消息发送方法,包括:根据指定延时时长确定延时消息的消息头,其中,所述指定延时时长为消息消费方延时消费所述延时消息的延时时长,所述消息头中包括目标延时等级和所述延时消息的消费时刻,所述指定延时时长大于或等于所述目标延时等级对应的目标延时时长;通过目标消息中间件将携带所述消息头的延时消息发送至所述消息消费方,其中,所述目标消息中间件在每一次接收到所述延时消息的情况下,均根据所述目标延时等级将所述延时消息延时传递至所述消息消费方;在所述消息消费方获取到所述延时消息的情况下,指示所述消息消费方根据所述消费时刻确定当前是否满足消费所述延时消息的预设条件;在所述消息消费方确定当前不满足所述预设条件的情况下,指示所述消息消费方重新确定所述消息头中的目标延时等级,并再次将携带所述消息头的延时消息传递至所述目标消息中间件。
在一个示例性的实施例中,根据指定延时时长确定所述延时消息的消息头中的目标延时等级,包括:确定所述目标消息中间件的多个预设延时时长;从所述多个预设延时时长中确定第一参考延时时长,其中,所述指定延时时长是所述第一参考延时时长的倍数,在所述多个预设延时时长中,所述指定延时时长与所述第一参考延时时长的倍数最小;将所述第一参考延时时长对应的延时等级确定为所述目标延时等级。
在一个示例性的实施例中,指示所述消息消费方重新确定所述消息头中的目标延时等级,包括:指示所述消息消费方不改变所述消息头中的目标延时等级;或者指示所述消息消费方根据所述消费时刻改变所述延时消息的消息头中的目标延时等级。
在一个示例性的实施例中,指示所述消息消费方根据所述消费时刻改变所述延时消息的消息头中的目标延时等级,包括:指示所述消息消费方确定当前时刻与所述消费时刻的时间差;指示所述消息消费方根据所述时间差从所述多个预设延时时长中确定第二参考延时时长,其中,所述时间差是所述第二参考延时时长的倍数,在所述多个预设延时时长中,所述时间差与所述第二参考延时时长的倍数最小;指示所述消息消费方将所述第二参考延时时长对应的延时等级确定为所述消息头中的目标延时等级。
在一个示例性的实施例中,根据指定延时时长确定所述延时消息的消息头中的目标延时等级,包括:确定所述目标消息中间件的多个预设延时时长;从所述多个预设延时时长中确定第三参考延时时长,其中,所述指定延时时长大于所述第三参考延时时长,在所述多个预设延时时长中,所述指定延时时长与所述第三参考延时时长的差值最小;将所述第三参考延时时长对应的延时等级确定为所述目标延时等级。
在一个示例性的实施例中,指示所述消息消费方重新确定所述消息头中的目标延时等级,包括:指示所述消息消费方确定当前时刻与所述消费时刻的时间差;指示所述消息消费方根据所述时间差从所述多个预设延时时长中确定第四参考延时时长,其中,所述时间差是所述第四参考延时时长的倍数,在所述多个预设延时时长中,所述时间差与所述第四参考延时时长的倍数最小;指示所述消息消费方将所述第四参考延时时长对应的延时等级确定为所述消息头中的目标延时等级。
在一个示例性的实施例中,指示所述消息消费方根据所述消费时刻确定当前是否满足消费所述延时消息的预设条件,包括:指示所述消息消费方在确定当前时刻与所述消费时刻的时间差小于或等于预设阈值的情况下,确定当前满足消费所述延时消息的预设条件;指示所述消息消费方在确定当前时刻与所述消费时刻的时间差大于所述预设阈值的情况下,确定当前不满足消费所述延时消息的预设条件。
根据本申请实施例的另一方面,还提供了一种消息发送装置,包括:第一确定模块,用于根据指定延时时长确定延时消息的消息头,其中,所述指定延时时长为消息消费方延时消费所述延时消息的延时时长,所述消息头中包括目标延时等级和所述延时消息的消费时刻,所述指定延时时长大于或等于所述目标延时等级对应的目标延时时长;第一发送模块,用于通过目标消息中间件将携带所述消息头的延时消息发送至所述消息消费方,其中,所述目标消息中间件在每一次接收到所述延时消息的情况下,均根据所述目标延时等级将所述延时消息延时传递至所述消息消费方;第二确定模块,用于在所述消息消费方获取到所述延时消息的情况下,指示所述消息消费方根据所述消费时刻确定当前是否满足消费所述延时消息的预设条件;第二发送模块,用于在所述消息消费方确定当前不满足所述预设条件的情况下,指示所述消息消费方重新确定所述消息头中的目标延时等级,并再次将携带所述消息头的延时消息传递至所述目标消息中间件。
根据本申请实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述消息发送方法。
根据本申请实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述消息发送方法。
通过本申请,根据指定延时时长确定延时消息的消息头中的延时等级和消费时刻,目标消息中间件按照延时等级发送延时消息,进而在消息消费方在接收到延时消息的时候,如果根据消费时刻确定当前不满足消费延时消息的预设条件,就重新确定消息头中的延时等级,并再次将携带消息头的延时消息传递至目标消息中间件,以使得目标消息中间件在延时等级对应的延时时长之后再次将延时消息传递发送至消息消费方,直至消息消费方可以消费延时消息,采用上述技术方案,通过消息消费方对延时消息的接力发送,使得可以使用目标消息中间件自定义任意时间的延时消息,解决了使用目前的消息中间件无法自定义任意时间的延时消息的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种消息发送方法的硬件环境示意图;
图2是根据本申请实施例的消息发送方法的流程图;
图3是根据本申请实施例的消息生产方发送延时消息的流程图;
图4是根据本申请实施例的消息消费方消费延时消息的流程图;
图5是根据本申请实施例的消息发送装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种消息发送方法。该消息发送方法广泛应用于智慧家庭(Smart Home)、智能家居、智能家用设备生态、智慧住宅(IntelligenceHouse)生态等全屋智能数字化控制应用场景。可选地,在本实施例中,上述消息发送方法可以应用于如图1所示的由终端设备102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端设备102进行连接,可用于为终端或终端上安装的客户端提供服务(如应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务,可在服务器上或独立于服务器配置云计算和/或边缘计算服务,用于为服务器104提供数据运算服务。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端设备102可以并不限定于为PC、手机、平板电脑、智能空调、智能烟机、智能冰箱、智能烤箱、智能炉灶、智能洗衣机、智能热水器、智能洗涤设备、智能洗碗机、智能投影设备、智能电视、智能晾衣架、智能窗帘、智能影音、智能插座、智能音响、智能音箱、智能新风设备、智能厨卫设备、智能卫浴设备、智能扫地机器人、智能擦窗机器人、智能拖地机器人、智能空气净化设备、智能蒸箱、智能微波炉、智能厨宝、智能净化器、智能饮水机、智能门锁等。
为了解决上述问题,在本实施例中提供了一种消息发送方法,包括但不限于应用在上述终端设备102中,图2是根据本申请实施例的消息发送方法的流程图,该流程包括如下步骤:
步骤S202,根据指定延时时长确定延时消息的消息头,其中,所述指定延时时长为消息消费方延时消费所述延时消息的延时时长,所述消息头中包括目标延时等级和所述延时消息的消费时刻,所述指定延时时长大于或等于所述目标延时等级对应的目标延时时长;
需要说明的是,指定延时时间为消息生产方设定的任意延长时间,可以为20秒,可以为22秒,也可以为3小时1分钟等等。
需要说明的是,目标延时等级为目标消息中间件中预设的多个延时等级中的一个延时等级。目标消息中间件为RocketMQ。
在一个示例性的实施例中,上述根据指定延时时长确定所述延时消息的消息头中的目标延时等级,可以通过以下步骤S11-S13实现:
步骤S11:确定所述目标消息中间件的多个预设延时时长;
需要说明的是,在目标消息中间件为RocketMQ的情况下,多个预设延时时长为:1秒(对应延时等级1)、5秒(对应延时等级2)、10秒(对应延时等级3)、30秒、1分钟、2分钟、3分钟、4分钟、5分钟、6分钟、7分钟、8分钟、9分钟、10分钟、20分钟、30分钟、1小时(对应延时等级17)、2小时(对应延时等级18)。
步骤S12:从所述多个预设延时时长中确定第一参考延时时长,其中,所述指定延时时长是所述第一参考延时时长的倍数,在所述多个预设延时时长中,所述指定延时时长与所述第一参考延时时长的倍数最小;
作为一种可选的示例,假设指定延时时长为2.5分钟,则第一参考延时时长为30秒。
步骤S13:将所述第一参考延时时长对应的延时等级确定为所述目标延时等级。
作为一种可选的示例,在第一参考延时时长为30秒的情况下,目标延时等级为延时等级4。
在本实施例中,要求“在多个预设延时时长中,指定延时时长与第一参考延时时长的倍数最小”的目的是为了减少目标消息中间件向消息消费方的发送延时消息的次数以及消息消费方接力发送延时消息的次数。
在一个示例性的实施例中,上述根据指定延时时长确定所述延时消息的消息头中的目标延时等级,还可以通过以下步骤S21-S23实现:
步骤S21:确定所述目标消息中间件的多个预设延时时长;
步骤S22:从所述多个预设延时时长中确定第三参考延时时长,其中,所述指定延时时长大于所述第三参考延时时长,在所述多个预设延时时长中,所述指定延时时长与所述第三参考延时时长的差值最小;
作为一种可选的示例,假设指定延时时长为2.5分钟,则确定的第三参考延时时长为2分钟。
步骤S23:将所述第三参考延时时长对应的延时等级确定为所述目标延时等级。
作为一种可选的示例,在第三参考延时时长为2分钟的情况下,目标延时等级为延时等级6。
通过上述步骤S21-S23,也可以减少目标消息中间件向消息消费方的发送延时消息的次数以及消息消费方接力发送延时消息的次数。
步骤S204,通过目标消息中间件将携带所述消息头的延时消息发送至所述消息消费方,其中,所述目标消息中间件在每一次接收到所述延时消息的情况下,均根据所述目标延时等级将所述延时消息延时传递至所述消息消费方;
在一个示例性的实施例中,目标消息中间件根据目标延时等级将延时消息延时传递至消息消费方,包括:目标消息中间件根据目标延时等级确定目标延时时长,目标消息中间件在所述目标延时时长之后将所述延时消息传递至消息消费方。
例如,如果目标延时等级为延时等级6,则目标延时等级对应的延时时间为2分钟,进而目标消息中间件在接收到延时消息之后第2分钟将延时消息传递至消息消费方。
步骤S206,在所述消息消费方获取到所述延时消息的情况下,指示所述消息消费方根据所述消费时刻确定当前是否满足消费所述延时消息的预设条件;
在一个示例性的实施例中,上述指示所述消息消费方根据所述消费时刻确定当前是否满足消费所述延时消息的预设条件,包括:指示所述消息消费方在确定当前时刻与所述消费时刻的时间差小于或等于预设阈值的情况下,确定当前满足消费所述延时消息的预设条件;指示所述消息消费方在确定当前时刻与所述消费时刻的时间差大于所述预设阈值的情况下,确定当前不满足消费所述延时消息的预设条件。
需要说明的是,为了使得延时消息可以准时的被消息消费方消费,进而预设阈值需要合理的设置,在一个示例性的实施例中,预设阈值为0.5秒。
步骤S208,在所述消息消费方确定当前不满足所述预设条件的情况下,指示所述消息消费方重新确定所述消息头中的目标延时等级,并再次将携带所述消息头的延时消息传递至所述目标消息中间件。
需要说明的是,在消息消费方再次将携带所述消息头的延时消息传递至所述目标消息中间件之后,目标消息中间件会继续根据延时消息中的目标延时等级将延时消息延时传递至消息消费方。
也就是说,在消息消费方接收到延时消息的情况下,会确定当前能否消费延时消息,如果确定不能消息延时消息,则会进行延时消息的接力发送,重新确定消息头中的目标延时等级,并再次将携带所述消息头的延时消息传递至所述目标消息中间件。
在一个示例性的实施例中,在上述“根据指定延时时长确定延时消息的消息头中的目标延时等级”为可以通过步骤S11-S13实现的情况下,指示所述消息消费方重新确定所述消息头中的目标延时等级,可以通过以下方式一或者方式二实现:
方式一:指示所述消息消费方不改变所述消息头中的目标延时等级;
需要说明的是,由于指定延时时长本身就是消息头中的目标延时等级对应的目标延时时长的倍数,进而消息消费方在不改变消息头中的目标延时等级的情况下,延时消息在后续也可以较为准时的被消息消费方消费。
方式二:指示所述消息消费方根据所述消费时刻改变所述延时消息的消息头中的目标延时等级。
需要说明的是,为了减少目标消息中间件向消息消费方的发送延时消息的次数以及消息消费方接力发送延时消息的次数,消息消费方在接收到延时消息以后,可以根据消费时刻改变延时消息的消息头中的目标延时等级。
作为一种可选的示例,上述方式二可以通过以下步骤S31-S33实现:
步骤S31:指示所述消息消费方确定当前时刻与所述消费时刻的时间差;
步骤S32:指示所述消息消费方根据所述时间差从所述多个预设延时时长中确定第二参考延时时长,其中,所述时间差是所述第二参考延时时长的倍数,在所述多个预设延时时长中,所述时间差与所述第二参考延时时长的倍数最小;
步骤S33:指示所述消息消费方将所述第二参考延时时长对应的延时等级确定为所述消息头中的目标延时等级。
作为一种可选的示例,假设指定延时时长为2.5分,消息生产方根据指定延时时长确定的延时消息的消息头中的目标延时等级为延时等级4(延时等级4对应的延时时长为30秒),消费时刻为10:52,在目标消息中间件根据延时时长发送延时消息以后,消息消费方获取到延时消息的时刻为10:50,则当前时刻与所述消费时刻的时间差为2分钟,则延时消息不满足消费条件,进而消息消费方可以通过上述步骤S31-S33确定第二参考延时时长为1分钟,进而将消息头中的目标延时等级从延时等级4(对应延时时长30秒)修改为延时等级5(对应延时时长1分钟)。
需要说明的是,在上述举例中,如果消息消费方在接收到延时消息以后,根据上述步骤S31-S33修改了消息头中的目标延时等级,则可以将目标消息中间件发送延时消息的次数从5次减少到3次,进而减轻了目标消息中间件的发送压力,同时也减轻了消息消费方接力发送的压力。
在一个示例性的实施例中,在上述“根据指定延时时长确定延时消息的消息头中的目标延时等级”为可以通过步骤S21-S23实现的情况下,指示所述消息消费方重新确定所述消息头中的目标延时等级,可以通过以下步骤S41-S43实现:
步骤S41:指示所述消息消费方确定当前时刻与所述消费时刻的时间差;
步骤S42:指示所述消息消费方根据所述时间差从所述多个预设延时时长中确定第四参考延时时长,其中,所述时间差是所述第四参考延时时长的倍数,在所述多个预设延时时长中,所述时间差与所述第四参考延时时长的倍数最小;
步骤S43:指示所述消息消费方将所述第四参考延时时长对应的延时等级确定为所述消息头中的目标延时等级。
需要说明的是,由于指定延时时间不是第二参考延时时长的倍数,进而为了消息消费方可以准时的消费延时消息,消息消费方就必须修改延时消息中的目标延时等级。
在一个示例性的实施例中,在上述“根据指定延时时长确定延时消息的消息头中的目标延时等级”为可以通过步骤S21-S23实现的情况下,指示所述消息消费方重新确定所述消息头中的目标延时等级,可以通过以下步骤S51-S53实现:
步骤S51:指示所述消息消费方确定当前时刻与所述消费时刻的时间差;
步骤S52:指示所述消息消费方根据所述时间差从所述多个预设延时时长中确定第五参考延时时长,其中,在所述多个预设延时时长中,所述时间差与所述第五参考延时时长的差值最小;
步骤S53:指示所述消息消费方将所述第五参考延时时长对应的延时等级确定为所述消息头中的目标延时等级。
上述步骤,根据指定延时时长确定延时消息的消息头中的延时等级和消费时刻,目标消息中间件按照延时等级发送延时消息,进而在消息消费方在接收到延时消息的时候,如果根据消费时刻确定当前不满足消费延时消息的预设条件,就重新确定消息头中的延时等级,并再次将携带消息头的延时消息传递至目标消息中间件,以使得目标消息中间件在延时等级对应的延时时长之后再次将延时消息传递发送至消息消费方,直至消息消费方可以消费延时消息,采用上述技术方案,通过消息消费方对延时消息的接力发送,使得可以使用目标消息中间件自定义任意时间的延时消息,解决了使用目前的消息中间件无法自定义任意时间的延时消息的问题。
显然,上述所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。为了更好的理解上述方法,以下结合实施例对上述过程进行说明,但不用于限定本申请实施例的技术方案,具体地:
在一个可选的实施例中,图3是根据本申请实施例的消息生产方发送延时消息的流程图,如图3所示,包括:
1、消息生产方根据目标延时时间(相当于上述实施例中的指定延时时长)选择合适的延时等级、并计算消息应该被消费的时间戳(相当于上述消息时刻)、接力次数。比如要实现3小时的延时消息,那么延时等级可以选择1小时,对应的消息接力次数就是3。
2、消息生产方设定RocketMQ消息头,将上述1中选择的延时等级和消费时间戳设定到消息请求头中。
3、消息生产方发送延时消息到RocketMQ,此时的延时等级就是上述步骤1中的延时等级。
在一个可选的实施例中,图4是根据本申请实施例的消息消费方消费延时消息的流程图,如图4所示,包括:
1、消息消费方拿到消息,然后取出此消息对应的消息头。
2、消息消费方计算当前时间与消息头中记录的消费时间戳误差。
3、消息消费方判断误差是否在可允许的范围内。需要说明的是,如果误差越小,消息消费时的精度就越高。
4、消息消费方确定误差在允许的范围内,正常消费此消息。需要说明的是,如果误差在允许的范围,那么说明此时已经到了消费此消息的时刻。
5、消息消费方确定误差不在允许的范围内(即消息还未到消费的时刻),ACK签收此消息,然后再次发送一条新的延时消息。需要说明的是,新的延时消息的消息体与当前消息一致,延时等级是消息头中记录的延时等级,发完消息后,消息消费方继续等待消息的下次投递。
需要说明的是,上述过程类似“接力跑”,就是通过小时间延时消息不停接力,来实现更长时间的延时功能。
需要说明的是,本申请实施例根据目标延时时间,选取接力过程中合适的延时等级。延时等级的选择要保证延时的正确性,同时也要尽可能地减少消息接力的次数,这样可以最大程度减轻RocketMQ服务器的压力。
需要说明的是,本申请实施例还需要选取合适的消息容忍误差,如果只有单纯的消费时间戳、而没有此参数(即上述预设阈值),就会出现这样的情况:当前时间距离消费时间戳差了0.5秒,即还未到消息应该被消费的时刻,那么就会再次投递该消息,这样就会影响延时的正确性,同时也可能会增加消息的接力次数。
需要说明的是,由于本申请实施例使用的是消息中间件,所以就肯定存在消息可靠性的问题,尤其是本方案需要不停地发消息,那么可靠性问题就更显突出。所以对于此方案的应用,要看具体业务场景对消息丢失的容忍程度,如果对消息可靠性要求很高,那么收发消息流程中,需要做更多容错处理。
此外,本申请实施例基于开源RocketMQ实现了延时时间更加丰富的延时消息,而且得益于RocketMQ的高可靠性和高吞吐量,在消息中间件可靠的情况下,也不会有什么未知异常,在实际工作中也有很多应用的业务场景:比如定时关闭未支付订单、定时取消用户未确认领奖的奖品等。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
在本实施例中还提供了一种消息发送装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的设备较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本申请实施例的消息发送装置的结构框图,该装置包括:
第一确定模块52,用于根据指定延时时长确定延时消息的消息头,其中,所述指定延时时长为消息消费方延时消费所述延时消息的延时时长,所述消息头中包括目标延时等级和所述延时消息的消费时刻,所述指定延时时长大于或等于所述目标延时等级对应的目标延时时长;
第一发送模块54,用于通过目标消息中间件将携带所述消息头的延时消息发送至所述消息消费方,其中,所述目标消息中间件在每一次接收到所述延时消息的情况下,均根据所述目标延时等级将所述延时消息延时传递至所述消息消费方;
第二确定模块56,用于在所述消息消费方获取到所述延时消息的情况下,指示所述消息消费方根据所述消费时刻确定当前是否满足消费所述延时消息的预设条件;
第二发送模块58,用于在所述消息消费方确定当前不满足所述预设条件的情况下,指示所述消息消费方重新确定所述消息头中的目标延时等级,并再次将携带所述消息头的延时消息传递至所述目标消息中间件。
上述装置,根据指定延时时长确定延时消息的消息头中的延时等级和消费时刻,目标消息中间件按照延时等级发送延时消息,进而在消息消费方在接收到延时消息的时候,如果根据消费时刻确定当前不满足消费延时消息的预设条件,就重新确定消息头中的延时等级,并再次将携带消息头的延时消息传递至目标消息中间件,以使得目标消息中间件在延时等级对应的延时时长之后再次将延时消息传递发送至消息消费方,直至消息消费方可以消费延时消息,采用上述技术方案,通过消息消费方对延时消息的接力发送,使得可以使用目标消息中间件自定义任意时间的延时消息,解决了使用目前的消息中间件无法自定义任意时间的延时消息的问题。
在一个示例性的实施例中,第一确定模块52,还用于确定所述目标消息中间件的多个预设延时时长;从所述多个预设延时时长中确定第一参考延时时长,其中,所述指定延时时长是所述第一参考延时时长的倍数,在所述多个预设延时时长中,所述指定延时时长与所述第一参考延时时长的倍数最小;将所述第一参考延时时长对应的延时等级确定为所述目标延时等级。
在一个示例性的实施例中,第二发送模块58,还用于指示所述消息消费方不改变所述消息头中的目标延时等级;或者指示所述消息消费方根据所述消费时刻改变所述延时消息的消息头中的目标延时等级。
在一个示例性的实施例中,第二发送模块58,还用于指示所述消息消费方确定当前时刻与所述消费时刻的时间差;指示所述消息消费方根据所述时间差从所述多个预设延时时长中确定第二参考延时时长,其中,所述时间差是所述第二参考延时时长的倍数,在所述多个预设延时时长中,所述时间差与所述第二参考延时时长的倍数最小;指示所述消息消费方将所述第二参考延时时长对应的延时等级确定为所述消息头中的目标延时等级。
在一个示例性的实施例中,第一确定模块52,还用于确定所述目标消息中间件的多个预设延时时长;从所述多个预设延时时长中确定第三参考延时时长,其中,所述指定延时时长大于所述第三参考延时时长,在所述多个预设延时时长中,所述指定延时时长与所述第三参考延时时长的差值最小;将所述第三参考延时时长对应的延时等级确定为所述目标延时等级。
在一个示例性的实施例中,第二发送模块58,还用于指示所述消息消费方确定当前时刻与所述消费时刻的时间差;指示所述消息消费方根据所述时间差从所述多个预设延时时长中确定第四参考延时时长,其中,所述时间差是所述第四参考延时时长的倍数,在所述多个预设延时时长中,所述时间差与所述第四参考延时时长的倍数最小;指示所述消息消费方将所述第四参考延时时长对应的延时等级确定为所述消息头中的目标延时等级。
在一个示例性的实施例中,第二确定模块56,还用于指示所述消息消费方在确定当前时刻与所述消费时刻的时间差小于或等于预设阈值的情况下,确定当前满足消费所述延时消息的预设条件;指示所述消息消费方在确定当前时刻与所述消费时刻的时间差大于所述预设阈值的情况下,确定当前不满足消费所述延时消息的预设条件。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,根据指定延时时长确定延时消息的消息头,其中,所述指定延时时长为消息消费方延时消费所述延时消息的延时时长,所述消息头中包括目标延时等级和所述延时消息的消费时刻,所述指定延时时长大于或等于所述目标延时等级对应的目标延时时长;
S2,通过目标消息中间件将携带所述消息头的延时消息发送至所述消息消费方,其中,所述目标消息中间件在每一次接收到所述延时消息的情况下,均根据所述目标延时等级将所述延时消息延时传递至所述消息消费方;
S3,在所述消息消费方获取到所述延时消息的情况下,指示所述消息消费方根据所述消费时刻确定当前是否满足消费所述延时消息的预设条件;
S4,在所述消息消费方确定当前不满足所述预设条件的情况下,指示所述消息消费方重新确定所述消息头中的目标延时等级,并再次将携带所述消息头的延时消息传递至所述目标消息中间件。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,根据指定延时时长确定延时消息的消息头,其中,所述指定延时时长为消息消费方延时消费所述延时消息的延时时长,所述消息头中包括目标延时等级和所述延时消息的消费时刻,所述指定延时时长大于或等于所述目标延时等级对应的目标延时时长;
S2,通过目标消息中间件将携带所述消息头的延时消息发送至所述消息消费方,其中,所述目标消息中间件在每一次接收到所述延时消息的情况下,均根据所述目标延时等级将所述延时消息延时传递至所述消息消费方;
S3,在所述消息消费方获取到所述延时消息的情况下,指示所述消息消费方根据所述消费时刻确定当前是否满足消费所述延时消息的预设条件;
S4,在所述消息消费方确定当前不满足所述预设条件的情况下,指示所述消息消费方重新确定所述消息头中的目标延时等级,并再次将携带所述消息头的延时消息传递至所述目标消息中间件。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种消息发送方法,其特征在于,包括:
根据指定延时时长确定延时消息的消息头,其中,所述指定延时时长为消息消费方延时消费所述延时消息的延时时长,所述消息头中包括目标延时等级和所述延时消息的消费时刻,所述指定延时时长大于或等于所述目标延时等级对应的目标延时时长;
通过目标消息中间件将携带所述消息头的延时消息发送至所述消息消费方,其中,所述目标消息中间件在每一次接收到所述延时消息的情况下,均根据所述目标延时等级将所述延时消息延时传递至所述消息消费方;
在所述消息消费方获取到所述延时消息的情况下,指示所述消息消费方根据所述消费时刻确定当前是否满足消费所述延时消息的预设条件;
在所述消息消费方确定当前不满足所述预设条件的情况下,指示所述消息消费方重新确定所述消息头中的目标延时等级,并再次将携带所述消息头的延时消息传递至所述目标消息中间件。
2.根据权利要求1所述的方法,其特征在于,根据指定延时时长确定所述延时消息的消息头中的目标延时等级,包括:
确定所述目标消息中间件的多个预设延时时长;
从所述多个预设延时时长中确定第一参考延时时长,其中,所述指定延时时长是所述第一参考延时时长的倍数,在所述多个预设延时时长中,所述指定延时时长与所述第一参考延时时长的倍数最小;
将所述第一参考延时时长对应的延时等级确定为所述目标延时等级。
3.根据权利要求2所述的方法,其特征在于,指示所述消息消费方重新确定所述消息头中的目标延时等级,包括:
指示所述消息消费方不改变所述消息头中的目标延时等级;或者
指示所述消息消费方根据所述消费时刻改变所述延时消息的消息头中的目标延时等级。
4.根据权利要求3所述的方法,其特征在于,指示所述消息消费方根据所述消费时刻改变所述延时消息的消息头中的目标延时等级,包括:
指示所述消息消费方确定当前时刻与所述消费时刻的时间差;
指示所述消息消费方根据所述时间差从所述多个预设延时时长中确定第二参考延时时长,其中,所述时间差是所述第二参考延时时长的倍数,在所述多个预设延时时长中,所述时间差与所述第二参考延时时长的倍数最小;
指示所述消息消费方将所述第二参考延时时长对应的延时等级确定为所述消息头中的目标延时等级。
5.根据权利要求1所述的方法,其特征在于,根据指定延时时长确定所述延时消息的消息头中的目标延时等级,包括:
确定所述目标消息中间件的多个预设延时时长;
从所述多个预设延时时长中确定第三参考延时时长,其中,所述指定延时时长大于所述第三参考延时时长,在所述多个预设延时时长中,所述指定延时时长与所述第三参考延时时长的差值最小;
将所述第三参考延时时长对应的延时等级确定为所述目标延时等级。
6.根据权利要求5所述的方法,其特征在于,指示所述消息消费方重新确定所述消息头中的目标延时等级,包括:
指示所述消息消费方确定当前时刻与所述消费时刻的时间差;
指示所述消息消费方根据所述时间差从所述多个预设延时时长中确定第四参考延时时长,其中,所述时间差是所述第四参考延时时长的倍数,在所述多个预设延时时长中,所述时间差与所述第四参考延时时长的倍数最小;
指示所述消息消费方将所述第四参考延时时长对应的延时等级确定为所述消息头中的目标延时等级。
7.根据权利要求1所述的方法,其特征在于,指示所述消息消费方根据所述消费时刻确定当前是否满足消费所述延时消息的预设条件,包括:
指示所述消息消费方在确定当前时刻与所述消费时刻的时间差小于或等于预设阈值的情况下,确定当前满足消费所述延时消息的预设条件;
指示所述消息消费方在确定当前时刻与所述消费时刻的时间差大于所述预设阈值的情况下,确定当前不满足消费所述延时消息的预设条件。
8.一种消息发送装置,其特征在于,包括:
第一确定模块,用于根据指定延时时长确定延时消息的消息头,其中,所述指定延时时长为消息消费方延时消费所述延时消息的延时时长,所述消息头中包括目标延时等级和所述延时消息的消费时刻,所述指定延时时长大于或等于所述目标延时等级对应的目标延时时长;
第一发送模块,用于通过目标消息中间件将携带所述消息头的延时消息发送至所述消息消费方,其中,所述目标消息中间件在每一次接收到所述延时消息的情况下,均根据所述目标延时等级将所述延时消息延时传递至所述消息消费方;
第二确定模块,用于在所述消息消费方获取到所述延时消息的情况下,指示所述消息消费方根据所述消费时刻确定当前是否满足消费所述延时消息的预设条件;
第二发送模块,用于在所述消息消费方确定当前不满足所述预设条件的情况下,指示所述消息消费方重新确定所述消息头中的目标延时等级,并再次将携带所述消息头的延时消息传递至所述目标消息中间件。
9.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行权利要求1至7中任一项所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310326292.7A CN116436861A (zh) | 2023-03-29 | 2023-03-29 | 消息发送方法及装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310326292.7A CN116436861A (zh) | 2023-03-29 | 2023-03-29 | 消息发送方法及装置、存储介质及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116436861A true CN116436861A (zh) | 2023-07-14 |
Family
ID=87093750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310326292.7A Pending CN116436861A (zh) | 2023-03-29 | 2023-03-29 | 消息发送方法及装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116436861A (zh) |
-
2023
- 2023-03-29 CN CN202310326292.7A patent/CN116436861A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114938365B (zh) | 功能模块的更新方法、装置、存储介质及电子装置 | |
CN114697150B (zh) | 命令的下发方法和装置、存储介质及电子装置 | |
CN116436861A (zh) | 消息发送方法及装置、存储介质及电子装置 | |
CN115296948B (zh) | 场景信息的更新方法和装置、存储介质及电子装置 | |
CN115309062B (zh) | 设备的控制方法、装置、存储介质及电子装置 | |
CN114884975B (zh) | 业务消息的处理方法和装置、存储介质及电子装置 | |
CN116418613A (zh) | 消息的回流处理方法、装置、存储介质及电子装置 | |
CN115277412B (zh) | 边缘网关的升级方法及装置、存储介质及电子装置 | |
CN115174513B (zh) | 消息推送方法及装置、存储介质及电子装置 | |
CN108931923B (zh) | 设备的控制方法及装置、存储介质和电子装置 | |
CN116578618A (zh) | 目标回流实例的生成方法、装置、存储介质及电子装置 | |
CN115312048B (zh) | 设备唤醒方法及装置、存储介质及电子装置 | |
CN115473753B (zh) | 网关设备的控制方法、装置、存储介质及电子装置 | |
US10412672B2 (en) | Technique for managing power usage in a local communication network | |
CN116761264B (zh) | 上行资源分配方法、装置、基站及中继终端 | |
CN115297103B (zh) | 逻辑约束文件的获取方法和装置、存储介质及电子装置 | |
CN115312049B (zh) | 指令的响应方法、存储介质及电子装置 | |
CN116506247A (zh) | 设备状态更新方法、装置、存储介质及电子装置 | |
CN116248647A (zh) | 资源包的发送方法及装置、存储介质及电子装置 | |
CN115419997B (zh) | 提示信息的发送方法及装置、存储介质及电子装置 | |
CN115148204B (zh) | 语音唤醒的处理方法及装置、存储介质及电子装置 | |
CN115484119B (zh) | 设备的控制方法和装置、存储介质及电子装置 | |
CN115001885B (zh) | 设备控制方法及装置、存储介质及电子装置 | |
CN114815642B (zh) | 智能设备的控制方法和装置、存储介质及电子装置 | |
CN117749843A (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 |