CN117319320A - 一种消息队列的消息消费失败的重试方法及系统 - Google Patents

一种消息队列的消息消费失败的重试方法及系统 Download PDF

Info

Publication number
CN117319320A
CN117319320A CN202311604799.0A CN202311604799A CN117319320A CN 117319320 A CN117319320 A CN 117319320A CN 202311604799 A CN202311604799 A CN 202311604799A CN 117319320 A CN117319320 A CN 117319320A
Authority
CN
China
Prior art keywords
message
time
retry
sets
message queue
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.)
Granted
Application number
CN202311604799.0A
Other languages
English (en)
Other versions
CN117319320B (zh
Inventor
吕火生
孔令超
陈啟铭
何健进
李�杰
罗兆源
麦嘉伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gongqing City Zhongtaolian Supply Chain Service Co ltd
Lin Zhoujia Home Network Technology Co ltd
Linzhou Lilijia Supply Chain Service Co ltd
Foshan Zhongtaolian Supply Chain Service Co Ltd
Tibet Zhongtaolian Supply Chain Service Co Ltd
Original Assignee
Gongqing City Zhongtaolian Supply Chain Service Co ltd
Lin Zhoujia Home Network Technology Co ltd
Linzhou Lilijia Supply Chain Service Co ltd
Foshan Zhongtaolian Supply Chain Service Co Ltd
Tibet Zhongtaolian Supply Chain Service Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Gongqing City Zhongtaolian Supply Chain Service Co ltd, Lin Zhoujia Home Network Technology Co ltd, Linzhou Lilijia Supply Chain Service Co ltd, Foshan Zhongtaolian Supply Chain Service Co Ltd, Tibet Zhongtaolian Supply Chain Service Co Ltd filed Critical Gongqing City Zhongtaolian Supply Chain Service Co ltd
Priority to CN202311604799.0A priority Critical patent/CN117319320B/zh
Publication of CN117319320A publication Critical patent/CN117319320A/zh
Application granted granted Critical
Publication of CN117319320B publication Critical patent/CN117319320B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/08Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明公开了一种消息队列的消息消费失败的重试方法及系统,涉及信息通讯技术领域,其中包括以下步骤:构建数量合集;分别监测交换机、消息队列与消费者信息,将交换机中重试的消息数量更新至重试数量集,将消息队列中的新消息数量更新至新消息集,将消费者数量更新至空闲消费者集;判断当前消息队列中位于队伍最前方的消息是否消费者成功消费,若未被消费者所消费,则将消费失败的消息转移至交换机中,进行延迟发送,对重试数量集的数量加1,对新消息集的数量减1。被移出到交换机中的消息可以在等待预设的时间后重新进入到消息队列中进行排队,不会影响消息的正常发送,使得每一条消息都能被消费。

Description

一种消息队列的消息消费失败的重试方法及系统
技术领域
本发明涉及信息通讯技术领域,特别是一种消息队列的消息消费失败的重试方法及系统。
背景技术
在数据传输领域,以消息通知作为交互模式的应用系统越来越多。在消息传输时,由于双方系统或传输链路的故障,导致消息在传输过程中丢失而不能及时、可靠的送达。针对这一问题,形成了各种不同的消息重发机制,用于重新发送未成功送达的消息。
现有的Spring Retry构架集成了一套消息消费失败后的重试机制,但重试是同步阻塞进行的,也就意味着如果当前有一条消息消费失败后会进行延时重试。若消费失败的消息在延时等待的过程中,如果有其它新进来的消息,新进来的消息是会被阻塞住的,新的消息需要在消费失败的消息被消费或者消费失败的消息重试时间结束后才能进行发送。
所以现有采用重发机制,在第一次发送不成功的情况下,能够进行多次的发送尝试,在很大程度上解决了消息发送不能送达的问题。但对于新进来的消息发送并不友好。由于多次的尝试重发,即浪费发送时间又占用系统资源,造成了发送效率的低下。
发明内容
针对上述缺陷,本发明的目的在于提出一种消息队列的消息消费失败的重试方法及系统,避免消费失败的消息堵塞在消息队列中,影响消息的发送效率。
为达此目的,本发明采用以下技术方案:一种消息队列的消息消费失败的重试方法,包括以下步骤:
步骤S1:构建数量合集,其中所述数量合集包括重试数量集、新消息集与空闲消费者集;
步骤S2:分别监测交换机、消息队列与消费者信息,将交换机中重试的消息数量更新至重试数量集,将消息队列中的新消息数量更新至新消息集,将消费者数量更新至空闲消费者集;
步骤S3:判断当前消息队列中,位于队伍最前方的消息是否正在被消费者所消费,若正在被消费者所消费,则空闲消费者集的数量减1,当被消费者所成功消费,所述新消息集数量减1,空闲消费者集的数量加1,当未被消费者所成功消费,则将消费失败的消息转移至交换机中,进行延迟发送,对重试数量集的数量加1,对所述新消息集的数量减1,空闲消费者集的数量加1;
其中延迟发送具体如下:消费失败消息在交换机中等待预设的时间后,判断该消费失败消息的重试次数是否大于次数阈值,若小于等于次数阈值,则重新发送至消息队列中进行排队,若大于次数阈值,则不进行发送。
优选的,所述延迟发送还包括如下步骤:
判断当前新消息集的数量是否为0,若为0,则判断当前空闲消费者集的数量与重试数量集的数量是否均大于1,若均大于1,则停止交换机中剩余等待时间最少的消费失败消息的等待时间,并将该消息发送至消息队列中,若消息被成功消费,重试数量集的数量减1,若消息未被成功消费,则重试数量集的数量不变,将消息重新发送至交换机中进行排队。
优选的,当消费失败消息的等待时间被停止时,执行如下步骤:
在该消息的头部增加时间标识,该时间标识用于获取消息重新进入消息队列的时间以及剩余等待时间,以消息重新进入消息队列的时间作为第一时间,以剩余等待时间作为第二时间;
当消费失败消息重新发送至交换机中进行排队时,执行如下步骤:
通过时间标识获取消息重新进入消息队列进行重试后的时间,作为第三时间;
获取第三时间与第一时间的差值,作为第一时间差,判断第一时间差是否大于等于第二时间,若第一时间差大于等于第二时间,则消息的重试次数+1,消息重新进入等待时间,若第一时间差小于第二时间,则消息的剩余等待时间等于第二时间减去第一时间差。
优选的,消息在所述交换机中的等待时间随重试次数的增加而增加。
一种消息队列的消息消费失败的重试系统包括:构建模块、监控模块与重试模块;
所述构建模块用于构建数量合集,其中所述数量合集包括重试数量集、新消息集与空闲消费者集;
所述监控模块用于分别监测交换机、消息队列与消费者信息,将交换机中重试的消息数量更新至重试数量集,将消息队列中的新消息数量更新至新消息集,将消费者数量更新至空闲消费者集;
所述重试模块用于判断当前消息队列中,位于队伍最前方的消息是否正在被消费者所消费,若正在被消费者所消费,则空闲消费者集的数量减1,当被消费者所成功消费,所述新消息集数量减1,空闲消费者集的数量加1,当未被消费者所成功消费,则将消费失败的消息转移至交换机中,进行延迟发送,对重试数量集的数量加1,对所述新消息集的数量减1,空闲消费者集的数量加1;
其中延迟发送具体如下:消费失败消息在交换机中等待预设的时间后,判断该消费失败消息的重试次数是否大于次数阈值,若小于等于次数阈值,则重新发送至消息队列中进行排队,若大于次数阈值,则不进行发送。
优选的,所述重试模块包括:判断子模块;
所述判断子模块用于判断当前新消息集的数量是否为0,若为0,则判断当前空闲消费者集的数量与重试数量集的数量是否均大于1,若均大于1,则停止交换机中剩余等待时间最少的消费失败消息的等待时间,并将该消息发送至消息队列中,若消息被成功消费,重试数量集的数量减1,若消息未被成功消费,则重试数量集的数量不变,将消息重新发送至交换机中进行排队。
优选的,所述判断子模块包括时间获取子模块以及重新计时子模块;
所述时间获取子模块用于在当消费失败消息的等待时间被停止时,在该消息的头部增加时间标识,该时间标识用于获取消息重新进入消息队列的时间以及剩余等待时间,以消息重新进入消息队列的时间作为第一时间,以剩余等待时间作为第二时间;
所述重新计时子模块用于在消费失败消息重新发送至交换机中进行排队时,通过时间标识获取消息重新进入消息队列进行重试后的时间,作为第三时间;
获取第三时间与第一时间的差值,作为第一时间差,判断第一时间差是否大于等于第二时间,若第一时间差大于等于第二时间,则消息的重试次数+1,消息重新进入等待时间,若第一时间差小于第二时间,则消息的剩余等待时间等于第二时间减去第一时间差。
优选的,还包括分组模块,所述分组用于将预设的等待时间分割为多组,每一组的等待时间随重试次数的增加而增加。
上述技术方案中的一个技术方案具有如下优点或有益效果:当消息队列中位于最前方的消息没有被消费者所消费时,该消息会进入到交换机中,此时新消息集数量减1,重试数量集的数量加1,而且会在该消息的头部增加延迟标志,交换机会根据延迟标志对该信息进行延迟发送,即该消息在交换机中等待相应的时间后,才会重新进入到消息队列中进行排队。此时新消息集数量加1,重试数量集的数量减1,通过将没有被成功消费的消息从所述消息队列中移出,不会影响到后续新消息的消费,从而减少系统所占用的资源,提高发送的效率,同时,被移出到交换机中的消息可以在等待预设的时间后重新进入到消息队列中进行排队,不会影响消息的正常发送,使得每一条消息都能被消费。
附图说明
图1是本发明一种消息队列的消息消费失败的重试方法的一个实施例的流程图;
图2是本发明一种消息队列的消息消费失败的重试系统的一个实施例的结构示意图。
具体实施方式
下面详细描述本发明的实施方式,实施方式的示例在附图中示出,其中,相同或类似的标号自始至终表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的实施方式的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明的实施方式的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
如图1~2所示,一种消息队列的消息消费失败的重试方法,包括以下步骤:
步骤S1:构建数量合集,其中所述数量合集包括重试数量集、新消息集与空闲消费者集;
步骤S2:分别监测交换机、消息队列与消费者信息,将交换机中重试的消息数量更新至重试数量集,将消息队列中的新消息数量更新至新消息集,将消费者数量更新至空闲消费者集;
步骤S3:判断当前消息队列中,位于队伍最前方的消息是否正在被消费者所消费,若正在被消费者所消费,则空闲消费者集的数量减1,当被消费者所成功消费,所述新消息集数量减1,空闲消费者集的数量加1,当未被消费者所成功消费,则将消费失败的消息转移至交换机中,进行延迟发送,对重试数量集的数量加1,对所述新消息集的数量减1,空闲消费者集的数量加1;
其中延迟发送具体如下:消费失败消息在交换机中等待预设的时间后,判断该消费失败消息的重试次数是否大于次数阈值,若小于等于次数阈值,则重新发送至消息队列中进行排队,若大于次数阈值,则不进行发送。
在本发明中,为了能够提高消息的消费效率,将会监控交换机、消息队列与消费者信息。当有新的消息需要进行发送时,新的消息会进入到消息队列中进行排队,此时新消息集的数量会加+1,当消息队列中位于最前方的消息没有被消费者所消费时,该消息会进入到交换机中,此时新消息集数量减1,重试数量集的数量加1,而且会在该消息的头部增加延迟标志,交换机会根据延迟标志对该信息进行延迟发送,即该消息在交换机中等待相应的时间后,才会重新进入到消息队列中进行排队。此时新消息集数量加1,重试数量集的数量减1,通过将没有被成功消费的消息从所述消息队列中移出,不会影响到后续新消息的消费,从而减少系统所占用的资源,提高发送的效率,同时,被移出到交换机中的消息可以在等待预设的时间后重新进入到消息队列中进行排队,不会影响消息的正常发送,使得每一条消息都能被正常消费。
在一个实施例中,重试数量集、新消息集与空闲消费者集的数量分别为:0、3、3,若当前消息队列中位于队伍最前方的消息正在被消费时,新消息集的数量变更为2、空闲消费者集的数量变更为2;
若当前消息队列中位于队伍最前方的消息没有被成功消费,且该信息的重试次数没有大于次数阈值,则该消息会移出消息队列,并进入到交换机中,此时新消息集的数量变更为2、重试数量集的数量变更为1,空闲消费者集的数量重新变为3,若预设的时间为5S,则消息在交换机等待5S后会重新进入到消息队列中排队,则此时会对新消息集与重试数量集的数量进行更新。
而当某一个信息的重试次数大于阈值,且在消息队列中并非消费者所消费,则直接将该信息移出,该信息会转移到人工服务部分,通过人工检测的方式解决该消息无法被成功消费的问题。
优选的,所述延迟发送还包括如下步骤:
判断当前新消息集的数量是否为0,若为0,则判断当前空闲消费者集的数量与重试数量集的数量是否均大于1,若均大于1,则停止交换机中剩余等待时间最少的消费失败消息的等待时间,并将该消息发送至消息队列中,若消息被成功消费,重试数量集的数量减1,若消息未被成功消费,则重试数量集的数量不变,将消息重新发送至交换机中进行排队。
为了进一步提高信息发送的效率,在本发明的技术方案中,会实时监测重试数量集、新消息集与空闲消费者集中的数量信息,当判断新消息集的数量为0时,则说明当前消息队列中没有新的消息进行排队,此时可以进一步判断在空闲消费者集中数量是否大于1,若大于1,则说明有当前没有消费者在进行消费,该信息可能在交换机中进行等待,为了减少消费者的等待时间,此时可以将交换机中剩余等待时间最少的消费失败消息立刻发送至消息队列中进行消费,在进行消费期间,空闲消费者集的数量减1,重试数量集的数量减1,新消息集加1,若该消息被消费,则空闲消费者集的数量加1,若没有被成功消费,则空闲消费者集的数量加1,重试数量集的数量加1,新消息集减1,则该消息需要重新进入到交换机中进行排队进延迟发送。
值得一提的是,为了提高信息的发送效率,在本发明中,当满足上述条件将消息直接发送到消息队列时,并不会重新计算该消息的等待时间,而是停止该消息的等待时间,避免该消息未被消费时,需要重新计算等待时间,延长了该消息的等待时间。
优选的,当消费失败消息的等待时间被停止时,执行如下步骤:
在该消息的头部增加时间标识,该时间标识用于获取消息重新进入消息队列的时间以及剩余等待时间,以消息重新进入消息队列的时间作为第一时间,以剩余等待时间作为第二时间;
当消费失败消息重新发送至交换机中进行排队时,执行如下步骤:
通过时间标识获取消息重新进入消息队列进行重试后的时间,作为第三时间;
获取第三时间与第一时间的差值,作为第一时间差,判断第一时间差是否大于等于第二时间,若第一时间差大于等于第二时间,则消息的重试次数+1,消息重新进入等待时间,若第一时间差小于第二时间,则消息的剩余等待时间等于第二时间减去第一时间差。
在一个实施例中,当新消息集的数量是否为0,且空闲消费者集的数量大于1时,就会将交换机中的消息传递至消息队列中,此时在传递的过程中,会该消息的头部增加时间标识,该时间标识用于获取消息在不同时间的时间值,例如一个消息等待时间为100S,其已经等待的时间为20S,那么此时第二时间为80S。同时时间标识会记录该消息进入消息队列的时间,例如在14:14时进入消息队列,那么第一时间为14:14。当消息在消息队列中又一次消费失败时,时间标识获取重试后时间,若重试后的时间为14:54,那么第三时间为14:54,此时第一时间差就为14:54-14:14=40S,此时第一时间差是小于所述第二时间的值,所以该消息的已等待时间增加40S,其剩余等待时间就等于80S-40S=40S。若该消息的第二时间是小于40S,则该消息的重试次数+1,重新计算该消息的等待时间。在本发明中,通过上述方法能够减少消息在交换机中的等待时间,从而加快消息的传递速度,提高消息的传递效率。
优选的,消息在所述交换机中的等待时间随重试次数的增加而增加。
例如,在本发明中,可以将消息的等待时间分割为5组,每一组等待时间对应消息在交换机中的重试次数所对应的等待时间,例如将等待时间[5,30,5*60,30*60,2*60*60],则第一次重试时,消息的等待时间为5S,第二次重试时,消息的等待时间为30S,第三次重试时,消息的等待时间为5分钟,以此类推,第四次重试时,消息的等待时间为30分钟、第五次重试时,消息的等待时间为120分钟。通过该方式能够合理分别出消息在不同重试次数的等待时间,以提高消息的传递效率。
一种消息队列的消息消费失败的重试系统,使用所述一种消息队列的消息消费失败的重试方法,包括:构建模块、监控模块与重试模块;
所述构建模块用于构建数量合集,其中所述数量合集包括重试数量集、新消息集与空闲消费者集;
所述监控模块用于分别监测交换机、消息队列与消费者信息,将交换机中重试的消息数量更新至重试数量集,将消息队列中的新消息数量更新至新消息集,将消费者数量更新至空闲消费者集;
所述重试模块用于判断当前消息队列中,位于队伍最前方的消息是否正在被消费者所消费,若正在被消费者所消费,则空闲消费者集的数量减1,当被消费者所成功消费,所述新消息集数量减1,空闲消费者集的数量加1,当未被消费者所成功消费,则将消费失败的消息转移至交换机中,进行延迟发送,对重试数量集的数量加1,对所述新消息集的数量减1,空闲消费者集的数量加1;
其中延迟发送具体如下:消费失败消息在交换机中等待预设的时间后,判断该消费失败消息的重试次数是否大于次数阈值,若小于等于次数阈值,则重新发送至消息队列中进行排队,若大于次数阈值,则不进行发送。
优选的,所述重试模块包括:判断子模块;
所述判断子模块用于判断当前新消息集的数量是否为0,若为0,则判断当前空闲消费者集的数量与重试数量集的数量是否均大于1,若均大于1,则停止交换机中剩余等待时间最少的消费失败消息的等待时间,并将该消息发送至消息队列中,若消息被成功消费,重试数量集的数量减1,若消息未被成功消费,则重试数量集的数量不变,将消息重新发送至交换机中进行排队。
优选的,所述判断子模块包括时间获取子模块以及重新计时子模块;
所述时间获取子模块用于在当消费失败消息的等待时间被停止时,在该消息的头部增加时间标识,该时间标识用于获取消息重新进入消息队列的时间以及剩余等待时间,以消息重新进入消息队列的时间作为第一时间,以剩余等待时间作为第二时间;
所述重新计时子模块用于在消费失败消息重新发送至交换机中进行排队时,通过时间标识获取消息重新进入消息队列进行重试后的时间,作为第三时间;
获取第三时间与第一时间的差值,作为第一时间差,判断第一时间差是否大于等于第二时间,若第一时间差大于等于第二时间,则消息的重试次数+1,消息重新进入等待时间,若第一时间差小于第二时间,则消息的剩余等待时间等于第二时间减去第一时间差。
优选的,还包括分组模块,所述分组用于将预设的等待时间分割为多组,每一组的等待时间随重试次数的增加而增加。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

Claims (8)

1.一种消息队列的消息消费失败的重试方法,其特征在于,包括以下步骤:
步骤S1:构建数量合集,其中所述数量合集包括重试数量集、新消息集与空闲消费者集;
步骤S2:分别监测交换机、消息队列与消费者信息,将交换机中重试的消息数量更新至重试数量集,将消息队列中的新消息数量更新至新消息集,将消费者数量更新至空闲消费者集;
步骤S3:判断当前消息队列中,位于队伍最前方的消息是否正在被消费者所消费,若正在被消费者所消费,则空闲消费者集的数量减1,当被消费者所成功消费,所述新消息集数量减1,空闲消费者集的数量加1,当未被消费者所成功消费,则将消费失败的消息转移至交换机中,进行延迟发送,对重试数量集的数量加1,对所述新消息集的数量减1,空闲消费者集的数量加1;
其中延迟发送具体如下:消费失败消息在交换机中等待预设的时间后,判断该消费失败消息的重试次数是否大于次数阈值,若小于等于次数阈值,则重新发送至消息队列中进行排队,若大于次数阈值,则不进行发送。
2.根据权利要求1所述的一种消息队列的消息消费失败的重试方法,其特征在于,所述延迟发送还包括如下步骤:
判断当前新消息集的数量是否为0,若为0,则判断当前空闲消费者集的数量与重试数量集的数量是否均大于1,若均大于1,则停止交换机中剩余等待时间最少的消费失败消息的等待时间,并将该消息发送至消息队列中,若消息被成功消费,重试数量集的数量减1,若消息未被成功消费,则重试数量集的数量不变,将消息重新发送至交换机中进行排队。
3.根据权利要求2所述的一种消息队列的消息消费失败的重试方法,其特征在于,
当消费失败消息的等待时间被停止时,执行如下步骤:
在该消息的头部增加时间标识,该时间标识用于获取消息重新进入消息队列的时间以及剩余等待时间,以消息重新进入消息队列的时间作为第一时间,以剩余等待时间作为第二时间;
当消费失败消息重新发送至交换机中进行排队时,执行如下步骤:
通过时间标识获取消息重新进入消息队列进行重试后的时间,作为第三时间;
获取第三时间与第一时间的差值,作为第一时间差,判断第一时间差是否大于等于第二时间,若第一时间差大于等于第二时间,则消息的重试次数+1,消息重新进入等待时间,若第一时间差小于第二时间,则消息的剩余等待时间等于第二时间减去第一时间差。
4.根据权利要求2所述的一种消息队列的消息消费失败的重试方法,其特征在于,消息在所述交换机中的等待时间随重试次数的增加而增加。
5.一种消息队列的消息消费失败的重试系统,其特征在于,包括:构建模块、监控模块与重试模块;
所述构建模块用于构建数量合集,其中所述数量合集包括重试数量集、新消息集与空闲消费者集;
所述监控模块用于分别监测交换机、消息队列与消费者信息,将交换机中重试的消息数量更新至重试数量集,将消息队列中的新消息数量更新至新消息集,将消费者数量更新至空闲消费者集;
所述重试模块用于判断当前消息队列中,位于队伍最前方的消息是否正在被消费者所消费,若正在被消费者所消费,则空闲消费者集的数量减1,当被消费者所成功消费,所述新消息集数量减1,空闲消费者集的数量加1,当未被消费者所成功消费,则将消费失败的消息转移至交换机中,进行延迟发送,对重试数量集的数量加1,对所述新消息集的数量减1,空闲消费者集的数量加1;
其中延迟发送具体如下:消费失败消息在交换机中等待预设的时间后,判断该消费失败消息的重试次数是否大于次数阈值,若小于等于次数阈值,则重新发送至消息队列中进行排队,若大于次数阈值,则不进行发送。
6.根据权利要求5所述的一种消息队列的消息消费失败的重试系统,其特征在于,所述重试模块包括:判断子模块;
所述判断子模块用于判断当前新消息集的数量是否为0,若为0,则判断当前空闲消费者集的数量与重试数量集的数量是否均大于1,若均大于1,则停止交换机中剩余等待时间最少的消费失败消息的等待时间,并将该消息发送至消息队列中,若消息被成功消费,重试数量集的数量减1,若消息未被成功消费,则重试数量集的数量不变,将消息重新发送至交换机中进行排队。
7.根据权利要求5所述的一种消息队列的消息消费失败的重试系统,其特征在于,所述判断子模块包括时间获取子模块以及重新计时子模块;
所述时间获取子模块用于在当消费失败消息的等待时间被停止时,在该消息的头部增加时间标识,该时间标识用于获取消息重新进入消息队列的时间以及剩余等待时间,以消息重新进入消息队列的时间作为第一时间,以剩余等待时间作为第二时间;
所述重新计时子模块用于在消费失败消息重新发送至交换机中进行排队时,通过时间标识获取消息重新进入消息队列进行重试后的时间,作为第三时间;
获取第三时间与第一时间的差值,作为第一时间差,判断第一时间差是否大于等于第二时间,若第一时间差大于等于第二时间,则消息的重试次数+1,消息重新进入等待时间,若第一时间差小于第二时间,则消息的剩余等待时间等于第二时间减去第一时间差。
8.根据权利要求5所述的一种消息队列的消息消费失败的重试系统,其特征在于,还包括分组模块,所述分组用于将预设的等待时间分割为多组,每一组的等待时间随重试次数的增加而增加。
CN202311604799.0A 2023-11-29 2023-11-29 一种消息队列的消息消费失败的重试方法及系统 Active CN117319320B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311604799.0A CN117319320B (zh) 2023-11-29 2023-11-29 一种消息队列的消息消费失败的重试方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311604799.0A CN117319320B (zh) 2023-11-29 2023-11-29 一种消息队列的消息消费失败的重试方法及系统

Publications (2)

Publication Number Publication Date
CN117319320A true CN117319320A (zh) 2023-12-29
CN117319320B CN117319320B (zh) 2024-02-13

Family

ID=89274045

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311604799.0A Active CN117319320B (zh) 2023-11-29 2023-11-29 一种消息队列的消息消费失败的重试方法及系统

Country Status (1)

Country Link
CN (1) CN117319320B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150006373A1 (en) * 2013-06-26 2015-01-01 Boku, Inc. Phone-on-file opt-in at a merchant server
CN106250250A (zh) * 2016-08-09 2016-12-21 广州唯品会信息科技有限公司 数据通信方法及装置
CN106375200A (zh) * 2016-11-08 2017-02-01 上海找钢网信息科技股份有限公司 消息系统及消息处理方法
CN109245935A (zh) * 2018-09-27 2019-01-18 福建天泉教育科技有限公司 一种消息队列异常的处理方法及终端
CN114237823A (zh) * 2021-12-17 2022-03-25 深圳壹账通创配科技有限公司 消息队列的异常处理方法、装置、计算机设备及存储介质
US11307912B1 (en) * 2020-09-29 2022-04-19 Amazon Technologies, Inc. Forward message compatibility safety in producer-consumer systems
WO2023278176A1 (en) * 2021-06-29 2023-01-05 Microsoft Technology Licensing, Llc Work queue for communication between a producer and a consumer
CN116094651A (zh) * 2022-10-31 2023-05-09 中国电信股份有限公司 消息重试方法、系统、电子设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150006373A1 (en) * 2013-06-26 2015-01-01 Boku, Inc. Phone-on-file opt-in at a merchant server
CN106250250A (zh) * 2016-08-09 2016-12-21 广州唯品会信息科技有限公司 数据通信方法及装置
CN106375200A (zh) * 2016-11-08 2017-02-01 上海找钢网信息科技股份有限公司 消息系统及消息处理方法
CN109245935A (zh) * 2018-09-27 2019-01-18 福建天泉教育科技有限公司 一种消息队列异常的处理方法及终端
US11307912B1 (en) * 2020-09-29 2022-04-19 Amazon Technologies, Inc. Forward message compatibility safety in producer-consumer systems
WO2023278176A1 (en) * 2021-06-29 2023-01-05 Microsoft Technology Licensing, Llc Work queue for communication between a producer and a consumer
CN114237823A (zh) * 2021-12-17 2022-03-25 深圳壹账通创配科技有限公司 消息队列的异常处理方法、装置、计算机设备及存储介质
CN116094651A (zh) * 2022-10-31 2023-05-09 中国电信股份有限公司 消息重试方法、系统、电子设备及存储介质

Also Published As

Publication number Publication date
CN117319320B (zh) 2024-02-13

Similar Documents

Publication Publication Date Title
CN109688016B (zh) 灵活以太网协议中切换时隙配置的方法及相关设备
MXPA05002750A (es) Sistema para la recuperacion eficiente de datos almacenados temporalmente en el nodo b despues del reajuste de la capa mac.
EP2432155B1 (en) Call list transmission processing method and system of charging system
CN101699861B (zh) 视频监控业务恢复的方法和系统
US20140293879A1 (en) Method and system for data record packet processing
JPH09160858A (ja) データ再送方法及びサーバ
CN116633942A (zh) 一种高速响应客户端的拜占庭容错共识方法
JPH06326713A (ja) データ伝送制御方法
US5084863A (en) System for interchanging messages in real time between stations interconnected by a loop link, in particular between stations in a telecommunications exchange
CN117319320B (zh) 一种消息队列的消息消费失败的重试方法及系统
EP1580916A2 (en) System and method for transmitting units of messages in a mobile communication system
CN117762652A (zh) 基于消息中间件的分布式事务的处理方法及装置
KR100608841B1 (ko) Mms 메시지의 분할 전송 및 자동 재전송 방법
WO2012051778A1 (zh) 多媒体消息业务中实现网元业务切换的系统及方法
CN102487330A (zh) 运行、管理和维护报文的发送方法及装置
JP3587092B2 (ja) 応答分散式通信方法および通信システム
CN112511919A (zh) Oam信息发送方法、装置、设备和存储介质
CN113992609B (zh) 一种处理多链路业务数据乱序的方法及系统
CN113794632B (zh) 一种网络保护方法及装置
CN105634894A (zh) 一种增强型can总线数据重发方法和装置
CN107623645A (zh) 一种基于数据流转发的电力系统实时数据交换系统
CN114500404A (zh) 通讯报文传输隔离方法及装置
US6556827B1 (en) Method of managing a plurality of radio links in wireless local loop
JP5441144B2 (ja) 通報受信システム、その通報受信方法、及びその通報受信プログラム
CN113079108B (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
GR01 Patent grant
GR01 Patent grant