CN111949497B - 消息队列系统以及基于消息队列系统的消息处理方法 - Google Patents
消息队列系统以及基于消息队列系统的消息处理方法 Download PDFInfo
- Publication number
- CN111949497B CN111949497B CN202010583137.XA CN202010583137A CN111949497B CN 111949497 B CN111949497 B CN 111949497B CN 202010583137 A CN202010583137 A CN 202010583137A CN 111949497 B CN111949497 B CN 111949497B
- Authority
- CN
- China
- Prior art keywords
- message
- shadow
- consumption
- hook function
- state
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 28
- 230000006870 function Effects 0.000 claims abstract description 178
- 238000012544 monitoring process Methods 0.000 claims abstract description 110
- 238000004519 manufacturing process Methods 0.000 claims abstract description 97
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000012545 processing Methods 0.000 claims abstract description 34
- 230000008569 process Effects 0.000 claims abstract description 29
- 230000001960 triggered effect Effects 0.000 claims description 57
- 230000002159 abnormal effect Effects 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3495—Performance evaluation by tracing or monitoring for systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Probability & Statistics with Applications (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种消息队列系统以及基于消息队列系统的消息处理方法,消息队列系统包括生产端、消费端以及监听端;消息处理方法包括在生产端和消费端中注册与事件对应的钩子函数;当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,钩子函数记录并发送状态信息至监听端;监听端创建与消息对应的影子消息,并将接收到的状态信息记录在影子消息中,根据影子消息对消息的处理过程进行统计。本发明实施例实现了细粒度且实时的消息处理追踪。
Description
技术领域
本发明涉及消息队列处理技术领域,更具体地,涉及一种消息队列系统以及一种基于消息队列系统的消息处理方法。
背景技术
消息队列是现代大型网站以及分布式系统中最重要的组成部分,主要用来解决系统应用耦合、异步消息、流量削峰等问题,是实现高性能、高可用、可伸缩和最终一致性架构的大型分布式系统或网站的不可或缺的一环。
常见的ActiveMQ、RabbitMQ、RocketMQ、Kafka等大型消息中间件或者以及基于Redis、Mysql等研发的小型消息中间件都在Web开发领域的很多场景中扮演着越来越重要的角色。但是消息队列的监测却始终比较简单,目前业界提供的监控往往仅能显示消息队列的积压情况,消费总数量等最大的几个指标。而对于消息本身缺乏度量和追踪的方案,往往不能满足业务方的诉求,导致消息队列的使用方们要做许多的重复工作来监测消息。
发明内容
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的消息队列系统以及基于消息队列系统的消息处理方法。
第一个方面,本发明实施例提供一种于消息队列系统的消息处理方法,所述消息队列系统包括生产端、消费端以及监听端;所述消息处理方法包括:
在生产端和消费端中注册与事件对应的钩子函数;
当所述生产端或所述消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,所述钩子函数记录并发送状态消息至所述监听端;所述状态信息为所述消息在事件后的更新状态以及更新时刻;
所述监听端创建与所述消息对应的影子消息,并将接收到的所述状态消息记录在所述影子消息中,根据所述影子消息对所述消息的处理过程进行统计。
进一步地,所述在生产端和消费端中注册与事件对应的钩子函数,包括:
在所述生产端中注册第一钩子函数,所述第一钩子函数在消息写入事件后触发,用于将所述消息的内容、消息入队时间以及已入队状态发送至所述监听端;
相应地,当所述生产端或所述消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当所述生产端将生成的消息写入消息队列时构成消息写入事件,触发执行所述第一钩子函数;
相应地,所述将接收到的所述状态信息记录在影子消息中,包括:
所述监听端在所述影子消息中记录接收到的所述消息的内容和消息入队时间,并将所述影子消息的状态更新为已入队。
进一步地,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第二钩子函数,所述第二钩子函数在消息开始执行事件后触发,用于将所述消息的消息出队时间以及消费中状态发送至所述监听端;
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当消费端将消息从消息队列中取出时构成消息开始执行事件,触发执行所述第二钩子函数;
相应地,将接收到的所述状态信息记录在影子消息中,包括:
所述监听端在所述影子消息中记录接收到的所述消息的消息出队时间,并将所述影子消息的状态更新为消费中。
进一步地,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第三钩子函数,所述第三钩子函数在消息完成事件后触发,用于将所述消息的消息完成时间以及已完成状态发送至所述监听端;
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当消费端将消息成功处理时构成消息完成事件,触发执行对应的第三钩子函数;
相应地,将接收到的所述状态信息记录在影子消息中,包括:
所述监听端在所述影子消息中记录接收到的所述消息的消息完成时间,并将所述影子消息的状态更新为已完成。
进一步地,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第四钩子函数,所述第四钩子函数在消息失败事件后触发,用于将所述消息的消息失败时间、异常信息以及已失败状态发送至所述监听端;
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当消费端处理消息失败时构成消息失败事件,触发执行对应的第四钩子函数;
相应地,将接收到的所述状态信息记录在影子消息中,包括:
所述监听端在所述影子消息中记录接收到所述消息的消息失败时间和异常信息,并将所述影子消息的状态更新为已失败,所述异常信息中包括消息失败的原因和调用栈信息。
进一步地,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第五钩子函数,所述第五钩子函数在消息重试事件后触发,用于向所述监听端告知待重试的消息的唯一标识或者重试结果;
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当消费端确定待重试的消息时构成第一消息重试事件,第一次触发执行对应的第五钩子函数,第五钩子函数向所述监听端告知待重试的消息的唯一标识;当消费端对所述待重试的消息重试后构成第二消息重试事件,第二次触发执行对应的第五钩子函数,第五钩子函数向监听端告知重试结果;
相应地,所述将接收到的所述状态信息记录在影子消息中,包括:
所述监听端根据接收到的待重试的消息的唯一标识,确定待重试的消息对应的影子消息,将所述影子消息中记录的消息内容写入队列,以供消费端重新读取;同时监听端在所述影子消息中记录接收到所述消息的重试时间,将所述影子消息的状态更新为重试入队;
监听端将接收到的重试结果写入对应的影子消息中,并根据重试结果对影子消息的状态进行更新。
进一步地,所述根据影子消息对消息的处理过程进行统计,具体为:
根据影子消息采集并计算消息队列的长度、预计完成时间、预设时间段内的任务完成数量、平均执行时间和失败任务数或队列消费的吞吐能力中的至少一种。
进一步地,消息的状态抽象为通用接口设计,并将预先选取的消息队列的组件按照通用接口进行二次封装;
其中,所述预先选取的消息队列包括kafka、redis或mysql队列中的至少两种。
进一步地,所述消息队列系统还包括任务中心,所述任务中心用于设置消息队列状态;
所述生产端还用于根据各消息队列的消息队列状态,确定放入消息的消息队列;
所述消费端还用于根据各消息队列的消息队列状态,确定读取消息的消息队列。
进一步地,所述任务中心将无消息的消息队列的消息队列状态设定为空闲态;将有消息但消息的等待时间小于延迟阈值的消息队列的消息队列状态设定为正常态;将有消息但消息的等待时间大于延迟阈值的消息队列的消息队列状态设定为积压态;将有消息但无消费时间的消息队列的消息队列状态设定为挂起态。
进一步地,生产端将消息写入消息队列的优先级由大到小依次为:空闲态的消息队列、正常态的消息队列和积压态的消息队列;
所述消费端从消息队列中读取消息的优先级由大到小依次为:积压态的消息队列、正常态的消息队列和挂起态的消息队列。
第二个方面,本发明实施例提供一种消息队列系统,包括:生产端、消费端以及监听端;所述生产端和消费端中注册与事件对应的钩子函数;
所述生产端和所述消费端用于对消息进行操作,当操作符合预设的事件时,触发执行对应的钩子函数,钩子函数记录并发送状态信息至所述监听端;所述状态信息为所述消息在事件后的更新状态以及更新时刻;
所述监听端用于创建与所述消息对应的影子消息,并将接收到的所述状态信息记录在所述影子消息中,根据所述影子消息对所述消息的处理过程进行统计。
进一步地,所述生产端中注册有第一钩子函数,所述第一钩子函数在消息写入事件后触发,用于将所述消息的内容、消息入队时间以及已入队状态发送至所述监听端;
相应地,所述生产端用于将生成的消息写入消息队列,当生成的消息写入消息队列时构成消息写入事件,触发执行所述第一钩子函数;
相应地,所述监听端用于在所述影子消息中记录接收到的所述消息的内容和消息入队时间,并将所述影子消息的状态更新为已入队。
进一步地,所述消费端中注册有第二钩子函数,所述第二钩子函数在消息开始执行事件后触发,用于将所述消息的消息出队时间以及消费中状态发送至所述监听端;
相应地,所述消费端用于将消息从消息队列中取出,当消息从队列中取出时构成消息开始执行事件,触发执行所述第二钩子函数;
相应地,所述监听端在所述影子消息中记录接收到的所述消息的消息出队时间,并将所述影子消息的状态更新为消费中。
进一步地,所述消费端中注册有第三钩子函数,所述第三钩子函数在消息完成事件后触发,用于将所述消息的消息完成时间以及已完成状态发送至所述监听端;
相应地,当所述消费端将消息成功处理时构成消息完成事件,触发执行对应的第三钩子函数;
相应地,所述监听端用于在所述影子消息中记录接收到的所述消息的消息完成时间,并将所述影子消息的状态更新为已完成。
进一步地,所述消费端中注册有第四钩子函数,所述第四钩子函数在消息失败事件后触发,用于将所述消息的消息失败时间、异常信息以及已失败状态发送至所述监听端;
相应地,当所述消费端处理消息失败时构成消息失败事件,触发执行对应的第四钩子函数;
相应地,所述监听端用于在所述影子消息中记录接收到所述消息的消息失败时间和异常信息,并将所述影子消息的状态更新为已失败,所述异常信息中包括消息失败的原因和调用栈信息。
进一步地,所述消费端中注册有第五钩子函数,所述第五钩子函数在消息重试事件后触发,用于向所述监听端告知待重试的消息的唯一标识或者重试结果;
相应地,所述消费端用于确定待重试的消息,当确定待重试的消息时构成第一消息重试事件,第一次触发执行对应的第五钩子函数,第五钩子函数向所述监听端告知待重试的消息的唯一标识;
当所述消费端对所述待重试的消息重试后构成第二消息重试事件,第二次触发执行对应的第五钩子函数,第五钩子函数向监听端告知重试结果;
相应地,所述监听端用于根据接收到的待重试的消息的唯一标识,确定待重试的消息对应的影子消息,将影子消息中记录的消息内容写入队列,以供消费端重新读取;同时监听端在所述影子消息中记录接收到所述消息的重试时间,将所述影子消息的状态更新为重试入队;
所述监听端还用于将接收到的重试结果写入对应的影子消息中,并根据重试结果对影子消息的状态进行更新。
进一步地,所述监听端根据影子消息对消息的处理过程进行统计,具体为:
根据影子消息采集并计算消息队列的长度、预计完成时间、预设时间段内的任务完成数量、平均执行时间和失败任务数或队列消费的吞吐能力中的至少一种。
进一步地,消息的状态抽象为通用接口设计,并将预先选取的消息队列的组件按照通用接口进行二次封装;
其中,所述预先选取的消息队列包括kafka、redis或mysql队列中的至少两种。
进一步地,所述消息队列系统还包括任务中心,所述任务中心用于设置消息队列状态;
所述生产端还用于根据各消息队列的消息队列状态,确定放入消息的消息队列;
所述消费端还用于根据各消息队列的消息队列状态,确定读取消息的消息队列。
进一步地,所述任务中心将无消息的消息队列的消息队列状态设定为空闲态;将有消息但消息的等待时间小于延迟阈值的消息队列的消息队列状态设定为正常态;将有消息但消息的等待时间大于延迟阈值的消息队列的消息队列状态设定为积压态;将有消息但无消费时间的消息队列的消息队列状态设定为挂起态。
进一步地,所述生产端将消息写入消息队列的优先级由大到小依次为:空闲态的消息队列、正常态的消息队列和积压态的消息队列;
所述消费端从消息队列中读取消息的优先级由大到小依次为:积压态的消息队列、正常态的消息队列和挂起态的消息队列。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。
本发明实施例提供的消息队列系统以及基于消息队列系统的消息处理方法,在生产端和消费端注册与事件对应的钩子函数(Hook),这样当生产端和消费端对消息的操作复合预设事件时,就会自动触发执行对应的钩子函数,钩子函数通过将消息在事件后的更新状态等信息发送至监听端,监听端构建与消息对应的影子消息,影子消息不止是消息的复制和保存,更是消息全维度的描述和追踪,根据影子消息对消息的处理过程进行实时统计,本发明通过注册钩子函数以及创建影子消息,实现了细粒度且实时的消息处理追踪。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的基于消息队列系统的消息处理方法;
图2为本发明实施例的消息队列系统的结构示意图;
图3为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了克服现有技术的上述问题,本发明实施例的发明构思为:在生产端和消费端注册与事件对应的钩子函数(Hook),这样当生产端或消费端对消息的操作复合预设事件时,就会自动触发执行对应的钩子函数,钩子函数通过将消息在事件后的更新状态等信息发送至监听端,监听端构建与消息对应的影子消息,影子消息不止是消息的复制和保存,更是消息全维度的描述和追踪,根据影子消息对消息的处理过程进行实时统计,本发明通过注册钩子函数以及创建影子消息,实现了细粒度且实时的消息处理追踪。
本发明实施例的消息队列系统包括生产端、消费端以及监听端,其中,生产端能够生成消息,并将消息写入至消息队列中,消费端能够从消息队列中取出消息,并对消息进行处理,监听端能够对消息的处理过程,例如消息写入消息队列的时间、消息从消息队列中取出的时间等等进行统计,并生成相关的统计报告,例如消息平均处理时间、消息吞吐能力、处理失败的数量等等。
图1为本发明实施例的基于消息队列系统的消息处理方法的流程示意图,如图1所示,该方法包括:
S101、在生产端和消费端中注册与事件对应的钩子函数;
应当理解的是,钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。通俗地说,钩子函数可以勾住用户“喜欢”的东西。在本发明中,生产端将消息写入消息队列、消费端从消息队列中取出消息、处理消息以及产生处理结果都是与消息生命周期相关的事件,所以本发明实施例通过在生产端和消费端中注册与事件对应的钩子函数,就能够在达成相应事件时立刻触发钩子函数的执行,可以理解的是,本发明实施例的钩子函数能够将“喜欢”的东西——消息的更新状态、更新时刻等信息发送至监听端,从而使监听端实现对消息处理过程的细粒度统计。
S102、当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,钩子函数记录并发送状态信息至所述监听端;所述状态信息为所述消息在事件后的更新状态以及更新时刻。
由上述说明可知,本发明实施例预先确定好了钩子函数的触发条件,那么在生产端或消费端对消息的操作符合预设的事件时,对应的钩子函数就会被触发,首先记录消息在相应的事件后的更新状态以及更新时刻,然后将记录的信息发送至监听端。
需要注意的是,本发明实施例之所以在生产端和消费端以“自产自销”的方式(即在本地注册,在本地触发)设置钩子函数,而不是以在生产端和消费端注册钩子函数并在监听端触发钩子函数,是因为后者还需要监听器二次回调才能获得相应的信息,而回调的方式就需要有存储空间存储与回调相关的信息,由此可见,本发明实施例的方式从效率和占用内存上都要优于后者。
S103、所述监听端创建与所述消息对应的影子消息,并将接收到的状态信息记录在影子消息中,根据影子消息对消息的处理过程进行统计。
本发明实施例针对消息创建对应的影子消息,从影子消息的内容可以看出,影子消息不止是消息的复制和保存,更是消息的全维度的描述和追踪,为队列/任务分类的描述,生产/消费/告警功能的实现奠定了基础。
可以理解的是,本发明实施例的监听端由于不再如现有技术那样只能监听到消息队列的积压情况、消息总数量,而是细粒度且实时地监听到消息的更新状态,所以在对消息的处理过程的统计上会更加丰富,比如对队列平均执行时间、任务平均处理时间、队列吞吐率、任务吞吐率等等指标进行统计。
本发明实施例的基于消息队列系统的消息处理方法,在生产端和消费端注册与事件对应的钩子函数(Hook),这样当生产端和消费端对消息的操作复合预设事件时,就会自动触发执行对应的钩子函数,钩子函数通过将消息在事件后的更新状态等信息发送至监听端,监听端构建与消息对应的影子消息,影子消息不止是消息的复制和保存,更是消息全维度的描述和追踪,通过影子消息对消息的处理过程进行实时统计,本发明通过注册钩子函数以及创建影子消息,实现了细粒度且实时的消息处理追踪。
在上述各实施例的基础上,作为一种可选实施例,所述在生产端和消费端中注册与事件对应的钩子函数,包括:
在所述生产端中注册第一钩子函数,所述第一钩子函数在消息写入事件后触发,用于将所述消息的内容、消息入队时间以及已入队状态发送至所述监听端。
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:当生产端将生成的消息写入消息队列时构成消息写入事件,触发执行所述第一钩子函数。
可以理解的是,在触发执行第一钩子函数后,第一钩子函数会将消息的内容、消息入队时间以及已入队状态发送至所述监听端。消息内容是消息的完整拷贝,消息入队时间是指消息写入消息队列的时间,已入队状态表示消息已经写入至消息队列中。
相应地,将接收到的状态信息记录在影子消息中,包括:监听端在所述影子消息中记录接收到的所述消息的内容和消息入队时间,并将所述影子消息的状态更新为已入队。
在上述各实施例的基础上,生产端在生成消息时,还同时生成了消息的唯一标识以及确定消息的信息类型,消息类型能够指明消息的分流,在房地产数字化交易领域中,消息类型可以是合同签约消息、合同变更消息、合同撤销消息等等。相应地,第一钩子函数还会将消息的唯一标识和消息类型发送至监听端,监听端在影子消息中记录消息的唯一表示以及消息类型。应当理解的是,本发明实施例的消息类型可以不加入原消息,而只记录在影子消息中,从而只增加消息统计的丰富度,而不对消息的处理增加负担。
在上述各实施例的基础上,作为一种可选实施例,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第二钩子函数,所述第二钩子函数在消息开始执行事件后触发,用于将所述消息的消息出队时间以及消费中状态发送至所述监听端。
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当消费端将消息从消息队列中取出时构成消息开始执行事件,触发执行所述第二钩子函数;
相应地,将接收到的状态信息记录在影子消息中,包括:
所述监听端在所述影子消息中记录接收到的所述消息的消息出队时间,并将所述影子消息的状态更新为消费中。
由上述实施例可知,本发明实施例的影子消息记录的状态信息是会得到更新的,这样监听端在对海量消息进行监听时,就可以快速通过实时的消息状态,统计各个状态或者目标状态的消息的数量等信息。
在上述各实施例的基础上,作为一种可选实施例,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第三钩子函数,所述第三钩子函数在消息完成事件后触发,用于将所述消息的消息完成时间以及已完成状态发送至所述监听端。
可以理解的是,本发明实施例的消费端在从消息队列中取出消息后会对消息进行处理,如果成功处理,则消息的生命周期结束。
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当消费端将消息成功处理时构成消息完成事件,触发执行对应的第三钩子函数;可以理解的是,当执行第三钩子函数时,第三钩子函数会将消息完成时间以及已完成状态发送至监听端,消息完成时间是指消费端成功处理消息的时刻,已完成状态表示消息已经被消费端处理完成。
相应地,将接收到的状态信息记录在影子消息中,包括:
所述监听端在所述影子消息中记录接收到的所述消息的消息完成时间,并将所述影子消息的状态更新为已完成。
在上述各实施例的基础上,作为一种可选实施例,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第四钩子函数,所述第四钩子函数在消息失败事件后触发,用于将所述消息的消息失败时间、异常信息以及已失败状态发送至所述监听端。所述异常信息中包括消息失败的原因和调用栈信息。
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当消费端处理消息失败时构成消息失败事件,触发执行对应的第四钩子函数;
相应地,将接收到的状态信息记录在影子消息中,包括:
所述监听端在所述影子消息中记录接收到所述消息的消息失败时间和异常信息,并将所述影子消息的状态更新为已失败。
需要说明的是,消息在失败后可以由消费端判断是否进行重试,如果不进行重试,则该消息的生命周期结束,若进行重试,则还进一步涉及利用影子消息快速实现消息重试的方案,具体地,包括:
在上述各实施例的基础上,作为一种可选实施例,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第五钩子函数,所述第五钩子函数在消息重试事件后触发,用于向所述监听端告知待重试的消息的唯一标识或者重试结果。
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当消费端确定待重试的消息时构成第一消息重试事件,第一次触发执行对应的第五钩子函数,第五钩子函数向所述监听端告知待重试的消息的唯一标识;当消费端对所述待重试的消息重试后构成第二消息重试事件,第二次触发执行对应的第五钩子函数,第五钩子函数向监听端告知重试结果。
应当理解的是,本发明实施例的第五钩子函数在两种事件发生时触发,并且不同的事件下会执行不同的操作,其中当消费端确定对某一消息进行重试时,会构成第一消息重试事件,第五钩子函数向监听端告知待重试的消息的唯一标识,以供监听端根据唯一标识确定待重试的消息,由于监听端的影子消息中记录了消息的内容,所以由监听端将消息的内容写入队列中,这样就不需要由生产端重新生成消息,提高了重试的效率,当监听端从队列中再次取出重试的消息并进一步重试之后,第五钩子函数被第二次触发,向监听端告知重试结果。
相应地,所述将接收到的状态信息记录在影子消息中,包括:
监听端根据接收到的待重试的消息的唯一标识,确定待重试的消息对应的影子消息,将影子消息中记录的消息内容写入队列,以供消费端重新读取;同时监听端在所述影子消息中记录接收到所述消息的重试时间,将所述影子消息的状态更新为重试入队;
监听端将接收到的重试结果写入对应的影子消息中,并根据重试结果对影子消息的状态进行更新。
应当理解的是,重试结果可能是消费端将消息成功处理,也可能是处理失败,如果是消息成功处理,就将影子消息的状态更新为已完成,如果是处理失败,就将影子消息的状态更新为已失败。
在上述各实施例的基础上,作为一种可选实施例,所述根据影子消息对消息的处理过程进行统计,具体为;
根据影子消息采集并计算消息队列的长度、预计完成时间、预设时间段内的任务完成数量、平均执行时间和失败任务数、消息消费的吞吐能力。
具体地,通过统计当前时刻的状态为已入队的影子消息的个数,即可计算出消息队列的长度;
根据公式:队列任务长度*任务平均完成时间/消费端个数,即可确定预计完成时间;消费个数这个是消费端在通知远端监听器的一个参数,每个消费端都有一个唯一标识,监听器会维护每个队列下当前有多少消费端。
任务平均完成时间:10分钟(该时长可配置)内相同任务类型的消费时间的均值;其中消费时间是指从入队到已完成的时间;
消息消费的吞吐能力:10分钟(该时长可配置)内相同任务类型的任务入队的数量。
在上述各实施例的基础上,作为一种可选实施例,消息的状态抽象为通用接口设计,并将预先选取的消息队列的组件按照通用接口进行二次封装;其中所述预先选取的消息队列包括kafka、redis或mysql队列中的至少两种。
需要说明的是,在队列处理逻辑方面,本发明实施例通过抽象,将所有的消息状态抽象为通用接口设计,包括消息入队、消费中、已失败、已成功和重试共5种,并选取常用的kafka、redis、mysql等消息队列的组件按照通用接口进行二次封装,打包成通用消息队列组件,用户仅需引入组件,并配置队列类型,即可使用,对于自研的消息队列,只要按照契约接口设计开发,即可接入,当不使用时,卸载通用组件,即可恢复原组件使用。
在上述各实施例的基础上,作为一种可选实施例,所述消息队列系统还包括任务中心,所述任务中心用于设置消息队列状态;
所述生产端还用于根据各消息队列的消息队列状态,确定放入消息的消息队列;
所述消费端还用于根据各消息队列的消息队列状态,确定读取消息的消息队列;
所述消费端还用于根据消费端权重以及各消息队列的消息队列状态,确定第二目标消息队列,并从第二目标消息队列中取出消息。
需要说明的是,本发明实施例中任务中心的设置,能够解决大型分布式系统中海量消息的消费积压的问题,任务中心将对消息队列设置消息队列状态,例如空闲态、正常态、积压态、挂起态等等,这样生产端就可以根据消费队列状态,将生成的消息写入合适的消息队列中,提供消息处理速度。
具体地,本发明实施例定义当消息队列中无消息时,该消息队列的消息队列状态为空闲态;当消息队列中有消息,但每个消息的等待时间(等待时间即消息自消息写入队列开始计时,至从队列中取出的时间)小于延迟阈值,则消息队列状态为正常态;当消息队列中有消息,但等待时间大于延迟阈值,则消息队列状态为积压态;当消息队列中有消息,但无消费时间,消费时间是指在队列中有任务的状态下,消费端在当前读取消费队列至上一次读取消费队列的时间,比如某一队列上一次有消费端读取队列的时间是9:00:00,而当前时刻有消费端读取队列的时刻是9:01:00,则消费时间记为1分钟,消费时间是针对一条消息队列设置的,其统计并不限于同一个消费端,以上述举例为例,某一队列上一次有消费端读取队列的时间是9:00:00,该消费端是消费端1,而9:01:00时刻读取该队列的消费端是消费端2。本发明的无消费时间是指在设置的消费时间阈值内一直没有消费端读取,比如设置的消费时间阈值为2分钟,如果超过两分钟仍然没有消费端读取消息队列,则称之为无消费时间,则消费队列状态为挂起态。
在上述各实施例的基础上,作为一种可选实施例,
生产端将消息写入消息队列的优先级由大到小依次为:空闲态的消息队列、正常态的消息队列和积压态的消息队列。
举例来说,如果有4条消息队列的状态分别为空闲态、正常态、积压态和挂起态,那么生产端优先将消息写入空闲态的消息队列,如果空闲态的消息队列有一些原因导致无法写入,则生产端将消息写入正常态的消息队列,如果正常态的消息队列有一些原因导致无法写入,则生产端将消息写入积压态的消息队列,如果积压态的消息队列有一些原因无法写入,则生产端不将消息写入任何消息队列中。
消费端从消息队列中读取消息的优先级由大到小依次为:积压态的消息队列、正常态的消息队列和挂起态的消息队列。
举例来说,如果有4条消息队列的状态分别为空闲态、正常态、积压态和挂起态,那么消费端优先读取积压态的消息队列,如果积压态的消息队列有一些原因导致无法读取,则生产端从正常态的消息队列中读取消息,如果正常态的消息队列有一些原因导致无法读取,则生产端读取挂起态的消息队列,如果挂起态的消息队列有一些原因无法读取,则生产端不读取任何消息队列。
图2为本发明实施例提供的消息队列系统的结构示意图,如图2所示,该消息队列系统包括:生产端201、消费端202以及监听端203,其中,所述生产端和消费端中注册与事件对应的钩子函数;
生产端201和消费端202用于对消息进行操作,当操作符合预设的事件时,触发执行对应的钩子函数,钩子函数记录并发送状态信息至所述监听端203;所述状态信息为所述消息在事件后的更新状态以及更新时刻;
所述监听端203用于创建与所述消息对应的影子消息,并将接收到的状态信息记录在影子消息中,根据所述影子消息对所述消息的处理过程进行统计。
本发明实施例提供的消息队列系统,具体执行上述各基于消息队列系统的消息处理方法实施例流程,具体请详见上述各消息处理方法方法实施例的内容,在此不再赘述。本发明实施例提供的消息队列系统,在生产端和消费端注册与事件对应的钩子函数(Hook),这样当生产端和消费端对消息的操作复合预设事件时,就会自动触发执行对应的钩子函数,钩子函数通过将消息在事件后的更新状态等信息发送至监听端,监听端构建与消息对应的影子消息,影子消息不止是消息的复制和保存,更是消息全维度的描述和追踪,通过影子消息对消息的处理过程进行实时统计,本发明通过注册钩子函数以及创建影子消息,实现了细粒度且实时的消息处理追踪。
在上述各实施例的基础上,作为一种可选实施例,所述生产端中注册有第一钩子函数,所述第一钩子函数在消息写入事件后触发,用于将所述消息的内容、消息入队时间以及已入队状态发送至所述监听端;
相应地,所述生产端用于将生成的消息写入消息队列,当生成的消息写入消息队列时构成消息写入事件,触发执行所述第一钩子函数;
相应地,所述监听端用于在所述影子消息中记录接收到的所述消息的内容和消息入队时间,并将所述影子消息的状态更新为已入队。
在上述各实施例的基础上,作为一种可选实施例,所述消费端中注册有第二钩子函数,所述第二钩子函数在消息开始执行事件后触发,用于将所述消息的消息出队时间以及消费中状态发送至所述监听端;
相应地,所述消费端用于将消息从消息队列中取出,当消息从队列中取出时构成消息开始执行事件,触发执行所述第二钩子函数;
相应地,所述监听端在所述影子消息中记录接收到的所述消息的消息出队时间,并将所述影子消息的状态更新为消费中。
在上述各实施例的基础上,作为一种可选实施例,所述消费端中注册有第三钩子函数,所述第三钩子函数在消息完成事件后触发,用于将所述消息的消息完成时间以及已完成状态发送至所述监听端;
相应地,当所述消费端将消息成功处理时构成消息完成事件,触发执行对应的第三钩子函数;
相应地,所述监听端用于在所述影子消息中记录接收到的所述消息的消息完成时间,并将所述影子消息的状态更新为已完成。
在上述各实施例的基础上,作为一种可选实施例,所述消费端中注册有第四钩子函数,所述第四钩子函数在消息失败事件后触发,用于将所述消息的消息失败时间、异常信息以及已失败状态发送至所述监听端;
相应地,当所述消费端处理消息失败时构成消息失败事件,触发执行对应的第四钩子函数;
相应地,所述监听端用于在所述影子消息中记录接收到所述消息的消息失败时间和异常信息,并将所述影子消息的状态更新为已失败,所述异常信息中包括消息失败的原因和调用栈信息。
在上述各实施例的基础上,作为一种可选实施例,所述消费端中注册有第五钩子函数,所述第五钩子函数在消息重试事件后触发,用于向所述监听端告知待重试的消息的唯一标识或者重试结果;
相应地,所述消费端用于确定待重试的消息,当确定待重试的消息时构成第一消息重试事件,第一次触发执行对应的第五钩子函数,第五钩子函数向所述监听端告知待重试的消息的唯一标识;
当所述消费端对所述待重试的消息重试后构成第二消息重试事件,第二次触发执行对应的第五钩子函数,第五钩子函数向监听端告知重试结果;
相应地,所述监听端用于根据接收到的待重试的消息的唯一标识,确定待重试的消息对应的影子消息,将影子消息中记录的消息内容写入队列,以供消费端重新读取;同时监听端在所述影子消息中记录接收到所述消息的重试时间,将所述影子消息的状态更新为重试入队;
所述监听端还用于将接收到的重试结果写入对应的影子消息中,并根据重试结果对影子消息的状态进行更新。
在上述各实施例的基础上,作为一种可选实施例,所述监听端根据影子消息对消息的处理过程进行统计,具体为:
根据影子消息采集并计算消息队列的长度、预计完成时间、预设时间段内的任务完成数量、平均执行时间和失败任务数或队列消费的吞吐能力中的至少一种。
在上述各实施例的基础上,作为一种可选实施例,消息的状态抽象为通用接口设计,并将预先选取的消息队列的组件按照通用接口进行二次封装;
其中,所述预先选取的消息队列包括kafka、redis或mysql队列中的至少两种。
在上述各实施例的基础上,作为一种可选实施例,所述消息队列系统还包括任务中心,所述任务中心用于设置消息队列状态;
所述生产端还用于根据各消息队列的消息队列状态,确定放入消息的消息队列;
所述消费端还用于根据各消息队列的消息队列状态,确定读取消息的消息队列。
在上述各实施例的基础上,作为一种可选实施例,所述任务中心将无消息的消息队列的消息队列状态设定为空闲态;将有消息但消息的等待时间小于延迟阈值的消息队列的消息队列状态设定为正常态;将有消息但消息的等待时间大于延迟阈值的消息队列的消息队列状态设定为积压态;将有消息但无消费时间的消息队列的消息队列状态设定为挂起态。
在上述各实施例的基础上,作为一种可选实施例,生产端将消息写入消息队列的优先级由大到小依次为:空闲态的消息队列、正常态的消息队列和积压态的消息队列;
消费端从消息队列中读取消息的优先级由大到小依次为:积压态的消息队列、正常态的消息队列和挂起态的消息队列。
图3为本发明实施例提供的电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储在存储器330上并可在处理器310上运行的计算机程序,以执行上述各实施例提供的基于消息队列系统的消息处理方法,例如包括:消息队列系统包括生产端、消费端以及监听端;消息处理方法包括在生产端和消费端中注册与事件对应的钩子函数;当生产端和消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,钩子函数记录并发送状态信息;监听端创建与消息对应的影子消息,并将接收到的状态信息记录在影子消息中,通过影子消息对消息的处理过程进行统计。
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的基于消息队列系统的消息处理方法,例如包括:消息队列系统包括生产端、消费端以及监听端;消息处理方法包括在生产端和消费端中注册与事件对应的钩子函数;当生产端和消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,钩子函数记录并发送状态信息;监听端创建与消息对应的影子消息,并将接收到的状态信息记录在影子消息中,通过影子消息对消息的处理过程进行统计。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于消息队列系统的消息处理方法,其特征在于,所述消息队列系统包括生产端、消费端以及监听端;所述消息处理方法包括:
在生产端和消费端中注册与事件对应的钩子函数;
当所述生产端或所述消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,所述钩子函数记录并发送状态信息至所述监听端;所述状态信息为所述消息在事件后的更新状态以及更新时刻;
所述监听端创建与所述消息对应的影子消息,并将接收到的所述状态信息记录在所述影子消息中,根据所述影子消息对所述消息的处理过程进行统计。
2.根据权利要求1所述的基于消息队列系统的消息处理方法,其特征在于,所述在生产端和消费端中注册与事件对应的钩子函数,包括:
在所述生产端中注册第一钩子函数,所述第一钩子函数在消息写入事件后触发,用于将所述消息的内容、消息入队时间以及已入队状态发送至所述监听端;
相应地,当所述生产端或所述消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当所述生产端将生成的消息写入消息队列时构成消息写入事件,触发执行所述第一钩子函数;
相应地,所述将接收到的所述状态信息记录在影子消息中,包括:
所述监听端在所述影子消息中记录接收到的所述消息的内容和消息入队时间,并将所述影子消息的状态更新为已入队。
3.根据权利要求1所述的基于消息队列系统的消息处理方法,其特征在于,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第二钩子函数,所述第二钩子函数在消息开始执行事件后触发,用于将所述消息的消息出队时间以及消费中状态发送至所述监听端;
相应地,当所述生产端或所述消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当所述消费端将消息从消息队列中取出时构成消息开始执行事件,触发执行所述第二钩子函数;
相应地,将接收到的所述状态信息记录在影子消息中,包括:
所述监听端在所述影子消息中记录接收到的所述消息的消息出队时间,并将所述影子消息的状态更新为消费中。
4.根据权利要求1所述的基于消息队列系统的消息处理方法,其特征在于,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第三钩子函数,所述第三钩子函数在消息完成事件后触发,用于将所述消息的消息完成时间以及已完成状态发送至所述监听端;
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当所述消费端将消息成功处理时构成消息完成事件,触发执行对应的第三钩子函数;
相应地,将接收到的所述状态信息在影子消息中,包括:
所述监听端在所述影子消息中记录接收到的所述消息的消息完成时间,并将所述影子消息的状态更新为已完成。
5.根据权利要求1所述的基于消息队列系统的消息处理方法,其特征在于,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第四钩子函数,所述第四钩子函数在消息失败事件后触发,用于将所述消息的消息失败时间、异常信息以及已失败状态发送至所述监听端;
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当消费端处理消息失败时构成消息失败事件,触发执行对应的第四钩子函数;
相应地,将接收到的所述状态信息记录在影子消息中,包括:
所述监听端在所述影子消息中记录接收到所述消息的消息失败时间和异常信息,并将所述影子消息的状态更新为已失败,所述异常信息中包括消息失败的原因和调用栈信息。
6.根据权利要求1所述的基于消息队列系统的消息处理方法,其特征在于,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第五钩子函数,所述第五钩子函数在消息重试事件后触发,用于向所述监听端告知待重试的消息的唯一标识或者重试结果;
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当消费端确定待重试的消息时构成第一消息重试事件,第一次触发执行对应的第五钩子函数,第五钩子函数向所述监听端告知待重试的消息的唯一标识;当消费端对所述待重试的消息重试后构成第二消息重试事件,第二次触发执行对应的第五钩子函数,第五钩子函数向监听端告知重试结果;
相应地,所述将接收到的所述状态信息记录在影子消息中,包括:
所述监听端根据接收到的待重试的消息的唯一标识,确定待重试的消息对应的影子消息,将所述影子消息中记录的消息内容写入队列,以供所述消费端重新读取;同时所述监听端在所述影子消息中记录接收到所述消息的重试时间,将所述影子消息的状态更新为重试入队;
所述监听端将接收到的重试结果写入对应的影子消息中,并根据所述重试结果对所述影子消息的状态进行更新。
7.根据权利要求1所述的基于消息队列系统的消息处理方法,其特征在于,所述根据影子消息对消息的处理过程进行统计,具体为:
根据影子消息采集并计算消息队列的长度、预计完成时间、预设时间段内的任务完成数量、平均执行时间、失败任务数和队列消费的吞吐能力中的至少一种。
8.一种消息队列系统,其特征在于,包括:包括生产端、消费端以及监听端;所述生产端和消费端中注册与事件对应的钩子函数;
所述生产端和所述消费端用于对消息进行操作,当操作符合预设的事件时,触发执行对应的钩子函数,钩子函数记录并发送状态信息至所述监听端;所述状态信息为所述消息在事件后的更新状态以及更新时刻;
所述监听端用于创建与所述消息对应的影子消息,并将接收到的所述状态信息记录在所述影子消息中,根据所述影子消息对所述消息的处理过程进行统计。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述基于消息队列系统的消息处理方法的步骤。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7中任意一项所述的基于消息队列系统的消息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010583137.XA CN111949497B (zh) | 2020-06-23 | 2020-06-23 | 消息队列系统以及基于消息队列系统的消息处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010583137.XA CN111949497B (zh) | 2020-06-23 | 2020-06-23 | 消息队列系统以及基于消息队列系统的消息处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111949497A CN111949497A (zh) | 2020-11-17 |
CN111949497B true CN111949497B (zh) | 2024-04-12 |
Family
ID=73337215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010583137.XA Active CN111949497B (zh) | 2020-06-23 | 2020-06-23 | 消息队列系统以及基于消息队列系统的消息处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111949497B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112738173A (zh) * | 2020-12-23 | 2021-04-30 | 上海创远仪器技术股份有限公司 | 无线电跨系统间实现可扩展异步消息处理的方法、系统、装置及存储介质 |
CN113094189B (zh) * | 2021-04-02 | 2022-03-18 | 上海万物新生环保科技集团有限公司 | 一种多渠道消息队列中的消息的处理方法及设备 |
CN113595814B (zh) * | 2021-07-06 | 2024-08-23 | 深圳Tcl新技术有限公司 | 消息延迟检测方法、装置、电子设备及存储介质 |
CN117331716B (zh) * | 2023-10-18 | 2024-08-20 | 广州方舟信息科技有限公司 | 一种消息处理方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838624A (zh) * | 2013-12-16 | 2014-06-04 | 浪潮电子信息产业股份有限公司 | 一种基于Linux消息队列的日志处理方法 |
CN107656825A (zh) * | 2017-09-01 | 2018-02-02 | 上海艾融软件股份有限公司 | 消息处理方法、装置及系统 |
CN109144817A (zh) * | 2018-08-03 | 2019-01-04 | 江苏满运软件科技有限公司 | 一种日志数据监控系统及方法 |
CN109271417A (zh) * | 2018-11-23 | 2019-01-25 | 福建榕基软件股份有限公司 | 一种基于数据库的轻量级消息队列实现方法及存储设备 |
CN110865929A (zh) * | 2019-11-26 | 2020-03-06 | 携程旅游信息技术(上海)有限公司 | 异常检测预警方法及系统 |
CN110941502A (zh) * | 2019-12-16 | 2020-03-31 | 广州市百果园信息技术有限公司 | 消息处理方法、装置、存储介质及设备 |
CN110968438A (zh) * | 2019-11-29 | 2020-04-07 | 江苏满运软件科技有限公司 | 事件消息异步通知方法、装置、电子设备、存储介质 |
CN111314422A (zh) * | 2020-01-17 | 2020-06-19 | 平安医疗健康管理股份有限公司 | 基于kafka的消息处理方法、系统、存储介质及计算机设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9990630B2 (en) * | 2014-04-28 | 2018-06-05 | Mastercard International Incorporated | Platform and method for analyzing the performance of message oriented middleware |
EP3616060A1 (en) * | 2017-04-24 | 2020-03-04 | Telefonaktiebolaget LM Ericsson (PUBL) | Message queue performance monitoring |
-
2020
- 2020-06-23 CN CN202010583137.XA patent/CN111949497B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838624A (zh) * | 2013-12-16 | 2014-06-04 | 浪潮电子信息产业股份有限公司 | 一种基于Linux消息队列的日志处理方法 |
CN107656825A (zh) * | 2017-09-01 | 2018-02-02 | 上海艾融软件股份有限公司 | 消息处理方法、装置及系统 |
CN109144817A (zh) * | 2018-08-03 | 2019-01-04 | 江苏满运软件科技有限公司 | 一种日志数据监控系统及方法 |
CN109271417A (zh) * | 2018-11-23 | 2019-01-25 | 福建榕基软件股份有限公司 | 一种基于数据库的轻量级消息队列实现方法及存储设备 |
CN110865929A (zh) * | 2019-11-26 | 2020-03-06 | 携程旅游信息技术(上海)有限公司 | 异常检测预警方法及系统 |
CN110968438A (zh) * | 2019-11-29 | 2020-04-07 | 江苏满运软件科技有限公司 | 事件消息异步通知方法、装置、电子设备、存储介质 |
CN110941502A (zh) * | 2019-12-16 | 2020-03-31 | 广州市百果园信息技术有限公司 | 消息处理方法、装置、存储介质及设备 |
CN111314422A (zh) * | 2020-01-17 | 2020-06-19 | 平安医疗健康管理股份有限公司 | 基于kafka的消息处理方法、系统、存储介质及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111949497A (zh) | 2020-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111949497B (zh) | 消息队列系统以及基于消息队列系统的消息处理方法 | |
CN107577717B (zh) | 一种保障数据一致性的处理方法、装置及服务器 | |
US8554846B2 (en) | System and method for providing a messaging kernel | |
CN111104235B (zh) | 一种基于队列的业务请求异步处理方法及装置 | |
US7698602B2 (en) | Systems, methods and computer products for trace capability per work unit | |
CN107506266B (zh) | 一种数据恢复方法及系统 | |
CN110231995B (zh) | 一种基于Actor模型的任务调度方法、装置及存储介质 | |
CN105471714A (zh) | 一种消息处理的方法和装置 | |
CN108459824A (zh) | 一种数据修改写方法及装置 | |
CN110968410B (zh) | 任务失败重试方法、装置、计算机设备及存储介质 | |
US8510426B2 (en) | Communication and coordination between web services in a cloud-based computing environment | |
CN114003203B (zh) | 一种活动计数变量的维护方法、装置、设备及可读介质 | |
CN114218303B (zh) | 一种交易数据的处理系统、处理方法、介质和设备 | |
CN115981893A (zh) | 消息队列任务处理方法、装置、服务器及存储介质 | |
CN115658745A (zh) | 数据处理方法、装置、计算机设备和计算机可读存储介质 | |
CN106354722B (zh) | 一种流式计算系统的消息处理方法和装置 | |
CN115237577A (zh) | 基于优先队列的作业调度方法及装置 | |
CN114416717A (zh) | 一种数据处理方法及架构 | |
CN113918364A (zh) | 一种基于Redis的轻量级消息队列处理方法及装置 | |
CN114443383A (zh) | 一种多路径对象链路状态检测方法、装置及存储介质 | |
CN108874560B (zh) | 进行通信的方法和通信设备 | |
CN110955539A (zh) | 进程退出方法、装置、电子设备及机器可读存储介质 | |
CN111367723A (zh) | 一种基于反射机制的自动重试装置及方法 | |
CN111381977A (zh) | 消息处理方法及设备 | |
US11822924B2 (en) | System and method for reactive flattening map for use with a microservices or other computing environment |
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 |