[发明专利]消息队列系统以及基于消息队列系统的消息处理方法在审
申请号: | 202010583137.X | 申请日: | 2020-06-23 |
公开(公告)号: | CN111949497A | 公开(公告)日: | 2020-11-17 |
发明(设计)人: | 陈光明 | 申请(专利权)人: | 贝壳技术有限公司 |
主分类号: | G06F11/34 | 分类号: | G06F11/34 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 杨云云 |
地址: | 300457 天津市滨海新区经济技术开发*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 消息 队列 系统 以及 基于 处理 方法 | ||
本发明实施例提供一种消息队列系统以及基于消息队列系统的消息处理方法,消息队列系统包括生产端、消费端以及监听端;消息处理方法包括在生产端和消费端中注册与事件对应的钩子函数;当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,钩子函数记录并发送状态信息至监听端;监听端创建与消息对应的影子消息,并将接收到的状态信息记录在影子消息中,根据影子消息对消息的处理过程进行统计。本发明实施例实现了细粒度且实时的消息处理追踪。
技术领域
本发明涉及消息队列处理技术领域,更具体地,涉及一种消息队列系统以及一种基于消息队列系统的消息处理方法。
背景技术
消息队列是现代大型网站以及分布式系统中最重要的组成部分,主要用来解决系统应用耦合、异步消息、流量削峰等问题,是实现高性能、高可用、可伸缩和最终一致性架构的大型分布式系统或网站的不可或缺的一环。
常见的ActiveMQ、RabbitMQ、RocketMQ、Kafka等大型消息中间件或者以及基于Redis、Mysql等研发的小型消息中间件都在Web开发领域的很多场景中扮演着越来越重要的角色。但是消息队列的监测却始终比较简单,目前业界提供的监控往往仅能显示消息队列的积压情况,消费总数量等最大的几个指标。而对于消息本身缺乏度量和追踪的方案,往往不能满足业务方的诉求,导致消息队列的使用方们要做许多的重复工作来监测消息。
发明内容
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的消息队列系统以及基于消息队列系统的消息处理方法。
第一个方面,本发明实施例提供一种于消息队列系统的消息处理方法,所述消息队列系统包括生产端、消费端以及监听端;所述消息处理方法包括:
在生产端和消费端中注册与事件对应的钩子函数;
当所述生产端或所述消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,所述钩子函数记录并发送状态消息至所述监听端;所述状态信息为所述消息在事件后的更新状态以及更新时刻;
所述监听端创建与所述消息对应的影子消息,并将接收到的所述状态消息记录在所述影子消息中,根据所述影子消息对所述消息的处理过程进行统计。
进一步地,所述在生产端和消费端中注册与事件对应的钩子函数,包括:
在所述生产端中注册第一钩子函数,所述第一钩子函数在消息写入事件后触发,用于将所述消息的内容、消息入队时间以及已入队状态发送至所述监听端;
相应地,当所述生产端或所述消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当所述生产端将生成的消息写入消息队列时构成消息写入事件,触发执行所述第一钩子函数;
相应地,所述将接收到的所述状态信息记录在影子消息中,包括:
所述监听端在所述影子消息中记录接收到的所述消息的内容和消息入队时间,并将所述影子消息的状态更新为已入队。
进一步地,所述在生产端和消费端中注册与事件对应的钩子函数,还包括:
在所述消费端中注册第二钩子函数,所述第二钩子函数在消息开始执行事件后触发,用于将所述消息的消息出队时间以及消费中状态发送至所述监听端;
相应地,当生产端或消费端对消息的操作符合预设的事件时,触发执行对应的钩子函数,包括:
当消费端将消息从消息队列中取出时构成消息开始执行事件,触发执行所述第二钩子函数;
相应地,将接收到的所述状态信息记录在影子消息中,包括:
所述监听端在所述影子消息中记录接收到的所述消息的消息出队时间,并将所述影子消息的状态更新为消费中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于贝壳技术有限公司,未经贝壳技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010583137.X/2.html,转载请声明来源钻瓜专利网。