System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及消息处理的,特别涉及一种消息聚合消费的方法及系统。
技术介绍
1、目前大部分的系统都存在高并发、高吞吐的应用场景,其中为了对各个模块进行解耦,最常见的方式就是通过消息中间件或者消息队列来进行系统或者模块之间的解耦操作。
2、通常的方式为:客户端发送消息后,到达服务端,服务端会直接处理这样的消息。为了支持高并发的操作,服务端会更进一步的通过消息队列来存储已接收的消息,之后,消费此消息队列中的消息并发送至一个线程池中,由线程池中的线程来处理这样的消息任务。此方式下,一定程度上能够提高消息的消费速率。但是,消息有大有小,每一个消息都对应着线程池中的一个线程来处理此任务,当小消息数量较多场景下,会大量占用线程池的任务数量,导致线程频繁的切换,反而会制约消息的消费速率。
技术实现思路
1、本专利技术所要解决的技术问题是:提供一种消息聚合消费的方法及系统,能够提高消息消费速率。
2、为了解决上述技术问题,本专利技术采用的技术方案为:
3、一种消息聚合消费的方法,包括步骤:
4、客户端接收到消息,记录所述消息的类型和数据量,将所述消息的类型和数据量作为键名,将所述消息作为值存储到消息队列中;
5、服务端进行消息消费时,从所述消息队列中获取消息列表,并将所述键名中相同类型的消息进行聚合,将聚合消息发送至线程池,通过线程池中的线程对所述聚合消息进行拆分消费。
6、为了解决上述技术问题,本专利技术采用的另一种技术方案
7、一种消息聚合消费的系统,包括:
8、客户端,用于接收到消息,记录所述消息的类型和数据量,将所述消息的类型和数据量作为键名,将所述消息作为值存储到消息队列中;
9、服务端,用于进行消息消费时,从所述消息队列中获取消息列表,并将所述键名中相同类型的消息进行聚合,将聚合消息发送至线程池,通过线程池中的线程对所述聚合消息进行拆分消费。
10、本专利技术的有益效果在于:当客户端接收到消息之后,预先记录每一个消息的类型和数据量大小,并根据消息的类型和数据量写入消息队列;当服务端进行消息消费时,从消息队列中获取消息列表,并将消息按类型聚合,之后,发送这些聚合消息至线程池中,一个包含同类型消息的聚合消息只需要线程池中的一个线程进行处理即可。以此方式,根据消息大小进行对应的聚合后,能够减少后续的消息消费的io消耗,同时,消息聚合方式下能够有效减少线程池中线程的使用量,能够进一步的提高消息消费速率。
本文档来自技高网...【技术保护点】
1.一种消息聚合消费的方法,其特征在于,包括步骤:
2.根据权利要求1所述的一种消息聚合消费的方法,其特征在于,将所述消息的类型和数据量作为键名,将所述消息作为值存储到消息队列中,还包括:
3.根据权利要求2所述的一种消息聚合消费的方法,其特征在于,将所述键名中相同类型的消息进行聚合,包括:
4.根据权利要求1所述的一种消息聚合消费的方法,其特征在于,将聚合消息发送至线程池,包括:
5.根据权利要求1所述的一种消息聚合消费的方法,其特征在于,通过线程池中的线程对所述聚合消息进行拆分消费,包括:
6.一种消息聚合消费的系统,其特征在于,包括:
7.根据权利要求6所述的一种消息聚合消费的系统,其特征在于,将所述消息的类型和数据量作为键名,将所述消息作为值存储到消息队列中,还包括:
8.根据权利要求7所述的一种消息聚合消费的系统,其特征在于,将所述键名中相同类型的消息进行聚合,包括:
9.根据权利要求6所述的一种消息聚合消费的系统,其特征在于,将聚合消息发送至线程池,包括:
10
...【技术特征摘要】
1.一种消息聚合消费的方法,其特征在于,包括步骤:
2.根据权利要求1所述的一种消息聚合消费的方法,其特征在于,将所述消息的类型和数据量作为键名,将所述消息作为值存储到消息队列中,还包括:
3.根据权利要求2所述的一种消息聚合消费的方法,其特征在于,将所述键名中相同类型的消息进行聚合,包括:
4.根据权利要求1所述的一种消息聚合消费的方法,其特征在于,将聚合消息发送至线程池,包括:
5.根据权利要求1所述的一种消息聚合消费的方法,其特征在于,通过线程池中的线程对所述聚合消息进行拆分消费,包括:
【专利技术属性】
技术研发人员:刘德建,林国忠,郑坦,郭孟祺,张少敏,郑锦斌,陈宏,
申请(专利权)人:福建天晴在线互动科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。