[发明专利]消息中间件的并发消费方法以及装置在审
申请号: | 202011032153.6 | 申请日: | 2020-09-27 |
公开(公告)号: | CN112181683A | 公开(公告)日: | 2021-01-05 |
发明(设计)人: | 石力;丰朋;吴丰科 | 申请(专利权)人: | 中国银联股份有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京市中伦律师事务所 11410 | 代理人: | 钟锦舜 |
地址: | 201203 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 消息 中间件 并发 消费 方法 以及 装置 | ||
本申请公开了一种消息中间件的消息并发处理方法以及装置,具体实现方案为:方法包括:消费线程从消息队列中提取消息,并将提取的消息存储至缓存队列中;采用线程池中的工作线程并发处理缓存队列中的消息,同时返回执行消费线程从消息队列中提取消息并将提取的消息存储至缓存队列中的步骤,直至消息队列中的消息处理完成。由于消费线程不执行业务逻辑,仅仅是将消息提取至缓存队列中,能够显著地提高单个消费线程的性能。将消息存储至缓存队列的同时利用线程池中的大量工作线程并发处理消息,节约了时间,提高了并发处理消息的速度和效率。利用线程池中的大量的工作线程并发处理缓存队列中的消息,明显提高了大批量消息的并发处理的能力。
技术领域
本申请涉及大数据领域,尤其涉及消息中间件的并发消费领域。
背景技术
消息中间件通过提供消息传递和消息排队模型,在分布式环境下扩展进程间的通信。在实际应用环境中,例如短信通知服务、数据统计服务等都是依赖于消息中间件去消费这条消息来完成自己的业务逻辑。对于消息中间件,常见的角色大致有生产者(producer)、消费者(consumer)以及消息队列(Message Queue)。其中,在线程世界里,生产者就是生产消息的线程,也叫做生产线程。消费者就是消费消息的线程,也叫做消费线程。消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。消息队列是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。生产者只管把消息发布到消息队列中而不用管谁来取,消费者只管从消息队列中取消息而不管是谁发布的。这样生产者和消费者都不用知道对方的存在。
消息中间件的消费能力受限于消息中间件本身的架构与设计。例如,消息队列kafka(高吞吐量的分布式发布订阅消息系统)集群的同一个主题(topic)中,单个消费者的性能是每一个分区(partition)只能被一个消费者消费,kafka集群消费者的最大消费者数量取决于分区的数量,分区数量和单个消费者性能极大地约束了kafka集群的消费者性能,导致消费者的消费能力较差。尤其当系统遇到高并发请求时,由于消费者消费能力没有跟上生产者的生产能力,导致消息堆积甚至消息丢失。
发明内容
本申请实施例提供一种消息中间件的消息并发处理方法以及装置,以解决相关技术存在的问题,技术方案如下:
第一方面,本实施例提供了一种消息中间件的消息并发处理方法,包括:
消费者从消息队列中提取消息,并将提取的消息存储至缓存队列中;
采用线程池中的工作线程并发处理缓存队列中的消息,同时返回执行消费者从消息队列中提取消息并将提取的消息存储至缓存队列中的步骤,直至消息队列中的消息处理完成。
在一种实施方式中,还包括:
在缓存队列中的消息达到阈值的情况下,停止对缓存队列中的消息进行处理。
在一种实施方式中,消费者从消息队列中提取消息,并将提取的消息存储至缓存队列中,包括:
每个消费者从消息队列为kafka集群中每个分区提取多个消息,并将同一个分区提取的消息存储至同一个缓存队列中。
在一种实施方式中,采用线程池中的多个工作线程并发处理缓存队列中的消息,包括:
采用单个线程池中的多个工作线程,按照预设消费顺序处理缓存队列中的多个消息。
在一种实施方式中,消费者从消息队列中提取消息,并将提取的消息存储至缓存队列中,包括:
每个消费者从消息队列为kafka集群中每个分区提取多个消息,并将同一个分区提取的消息存储至多个缓存队列中。
在一种实施方式中,采用线程池中的多个工作线程并发处理缓存队列中的消息,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国银联股份有限公司,未经中国银联股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011032153.6/2.html,转载请声明来源钻瓜专利网。