消息传递方法、系统和消息中间件系统技术方案

技术编号:15104428 阅读:95 留言:0更新日期:2017-04-08 14:53
本发明专利技术涉及一种消息传递方法、系统和消息中间件,该方法包括:接收消息生产端输入的特性参数,并根据特征参数选择匹配中间件生成消息;消息包括消息体,消息体包括与匹配中间件对应的标识;根据消息体的标识,查找与匹配中间件对应的通道,并将消息存储在通道中;根据通道确定与通道对应的路由路径,将消息路由至与通道对应的队列中;接收消息消费端的消费请求,查找与消费端对应的队列,根据消费请求将对应的队列中的消息发送给消息消费端。该消息传递方法,能够根据消息生产端输入的特征参数选择匹配的中间件生成消息,支持多种类型的消息中间件,能够满足多种业务场景的需求。

【技术实现步骤摘要】

本专利技术涉及数据传输
,特别是涉及一种消息传递方法、系统和消息中间件系统
技术介绍
由于广泛的存在跨应用的消息的传递和消费,在过去一段时间,我们使用轮询来解决这些问题,但是消息的及时性无法得到保证,而且存在大量的冗余设计,以致影响生产者的“业务主体性能”。从框架建设角度来说,跨应用的消息的传递需要大量的信号通知和消息驱动来协调各个应用和环节。如果没有引入数据和事件驱动的概念,就无法从繁杂的业务和不断重叠的逻辑修改中解脱出来,完成实时准确的业务交付。在业界,开源社区和各大公司也有类似的中间件产品,比如腾讯tube,阿里的rocketmq,开源的kafka,rabbitmq等。tube、kafka能够照顾到海量的消息传输的场景,但是对于业务事务型要求很高的场景不能满足,而Rocketmq和rabbitmq的场景在事务上有比较丰富的支持,但是对于并发的需求和顺序的要求满足的不是很好。因此,现有的中间件产品不能满足多样性场景的需求。
技术实现思路
基于此,有必要提供一种能满足多样性场景需求的消息传递方法、系统和消息中间件系统。一种消息传递方法,包括:接收消息生产端输入的特性参数,并根据特征参数选择匹配中间件生成消息;消息包括消息体,消息体包括与匹配中间件对应的标识;根据消息体的标识,查找与匹配中间件对应的通道,并将消息存储在通道中;根据通道确定与通道对应的路由路径,将消息路由至与通道对应的队列中;接收消息消费端的消费请求,查找与消费端对应的队列,根据消费请求将对应的队列中的消息发送给消息消费端。在其中一种实施方式中,根据消息体的标识,查找与匹配中间件对应的通道,并将消息存储在通道中的步骤,包括:获取通道的元数据,查找与消息体的标识对应的元数据并确定元数据对应的通道;将消息存储在通道中。在其中一种实施方式中,根据通道确定与通道对应的路由路径,将消息路由至与通道对应的队列中的步骤,包括:获取队列的元数据,查找与通道的元数据对应的队列的元数据并确定通道对应的队列;将消息路由至队列中。在其中一种实施方式中,特征参数包括:消息是否支持事务性,消息是否支持顺序性,消息是否需要重新添加到队列,消息是否需要设置过期时间、消息是否需要死信队列,消息是否需要用户域管理以及消息是否有数据的流量需求的任意一项或多项。一种消息传递系统,包括:消息生成模块,用于接收消息生产端输入的特性参数,并根据特征参数选择匹配中间件生成消息;消息包括消息体,消息体包括与匹配中间件对应的标识;存储模块,用于根据消息体的标识,查找与匹配中间件对应的通道,并将消息存储在通道中;路由模块,用于根据通道确定与通道对应的路由路径,将消息路由至与通道对应的队列中;消息发送模块,用于接收消息消费端的消费请求,查找与消费端对应的队列,根据消费请求将对应的队列中的消息发送给消息消费端。在其中一种实施方式中,存储模块包括:第一查找单元,用于获取通道的元数据,查找与消息体的标识对应的元数据并确定元数据对应的通道,存储单元,用于将消息存储在通道中。在其中一种实施方式中,路由模块包括:第二查找单元,用于获取队列的元数据,查找与通道的元数据对应的队列的元数据并确定通道对应的队列;路由单元,用于将消息路由至队列中。在其中一种实施方式中,特征参数包括:消息是否支持事务性,消息是否支持顺序性,消息是否需要重新添加到队列,消息是否需要设置过期时间、消息是否需要死信队列,消息是否需要用户域管理以及消息是否有数据的流量需求的任意一项或多项。一种消息中间件系统,包括:多个类型的中间件、与每个中间件对应的多个通道以及与每个通道对应的多个队列;中间件,用于根据与其匹配的特性参数生成消息,消息包括消息体,消息体包括与匹配中间件对应的标识;通道,用于根据消息体的标识,存储对应的中间件生成的消息;队列,用于路由与其对应通道的消息在其中一种实施方式中,特征参数包括:消息是否支持事务性,消息是否支持顺序性,消息是否需要重新添加到队列,消息是否需要设置过期时间、消息是否需要死信队列,消息是否需要用户域管理以及消息是否有数据的流量需求的任意一项或多项;中间件包括kafka、rabbitmq和Rocketmq。该消息传递方法,通道对面消息生产端,队列面对消息消费端,通道与队列预先建立对应关系。当消息生产端需要产生消息时,根据输入的特征参数选择匹配中间件生成消息并存储在该匹配中间件对应的通道中,根据通道确定与通道对应的路由路径,将消息路由至通道对应的队列中,当接收到消费端的消费请求时,查找与消费端对应的队列,根据消费请求将对应的队列中的消息发送给消息消费端。该消息传递方法,能够根据消息生产端输入的特征参数选择匹配的中间件生成消息,支持多种类型的消息中间件,因此,能够满足多种业务场景的需求。附图说明图1为一种实施方式的消息传递方法的流程图;图2为一种实施方式的消息传递方法的原理图;图3为一种实施方式的将消息存储在通道的方法的流程图;图4为一种实施方式的将消息路由至队列的方法的流程图;图5为一种实施方式的消息传递系统的功能模块示意图。具体实施方式如图1和图2所示,一种消息传递方法,包括以下步骤:S10:接收消息生产端输入的特性参数,并根据特征参数选择匹配中间件生成消息。消息生产端是指消息生产者所在的用户端,消息生产者是指消息数据的源头,消息数据的生产方。消息生产者通过平台输入与消息相关的特征参数,根据特征参数选择匹配的中间件生成消息。消息包括消息体,消息体是各类型中间件消息的head/body所支持特性上取并集,在数据压缩方面采用protobuf的方式编码传输。消息体包括与匹配中间件对应的标识。S30:根据消息体的标识,查找与匹配中间件对应的通道,并将消息存储在通道中。通道(Channel)面向消息生产者,是消息数据的一个存储管道。每种中间件包括多个通道,生成消息后,根据其消息体的标识,查找与该标识对应的通道,将消息存储在该通道中。S50:根据通道确定与通道对应的路由路径,将消息路由至与通道对应的队列中。队列(Queue)面向消息消费者,是消息数据路由后的队列,一个通道(Channel)可与多个队列(Queue)对应,因此,一个通道(Channel)的消息...

【技术保护点】
一种消息传递方法,包括:接收消息生产端输入的特性参数,并根据所述特征参数选择匹配中间件生成消息;所述消息包括消息体,所述消息体包括与所述匹配中间件对应的标识;根据所述消息体的标识,查找与所述匹配中间件对应的通道,并将所述消息存储在所述通道中;根据所述通道确定与所述通道对应的路由路径,将所述消息路由至与所述通道对应的队列中;接收消息消费端的消费请求,查找与所述消费端对应的队列,根据所述消费请求将所述对应的队列中的消息发送给所述消息消费端。

【技术特征摘要】
1.一种消息传递方法,包括:
接收消息生产端输入的特性参数,并根据所述特征参数选择匹配中间件生
成消息;所述消息包括消息体,所述消息体包括与所述匹配中间件对应的标识;
根据所述消息体的标识,查找与所述匹配中间件对应的通道,并将所述消
息存储在所述通道中;
根据所述通道确定与所述通道对应的路由路径,将所述消息路由至与所述
通道对应的队列中;
接收消息消费端的消费请求,查找与所述消费端对应的队列,根据所述消
费请求将所述对应的队列中的消息发送给所述消息消费端。
2.根据权利要求1所述的消息传递方法,其特征在于,所述根据所述消息
体的标识,查找与所述匹配中间件对应的通道,并将所述消息存储在所述通道
中的步骤,包括:
获取通道的元数据,查找与所述消息体的标识对应的元数据并确定所述元
数据对应的通道;
将所述消息存储在所述通道中。
3.根据权利要求1所述的消息传递方法,其特征在于,所述根据所述通道
确定与所述通道对应的路由路径,将所述消息路由至与所述通道对应的队列中
的步骤,包括:
获取队列的元数据,查找与所述通道的元数据对应的队列的元数据并确定
所述通道对应的队列;
将所述消息路由至所述队列中。
4.根据权利要求1所述的消息传递方法,其特征在于,所述特征参数包括:
消息是否支持事务性,消息是否支持顺序性,消息是否需要重新添加到队列,
消息是否需要设置过期时间、消息是否需要死信队列,消息是否需要用户域管
理以及消息是否有数据的流量需求的任意一项或多项。
5.一种消息传递系统,包括:
消息生成模块,用于接收消息生产端输入的特性参数,并根据所述特征参
数选择匹配中间件生成消息;所述消息包括消息体,所述消息体包括与所述匹

\t配中间件对应的标识;
存储模块,用于根据所述消息体的标识,查找与所述匹配中间件对应的通
道,并将所述消息存储在所述通道中;
路由模块...

【专利技术属性】
技术研发人员:朱乐超鲍大伦宋威张勇华于鸿磊
申请(专利权)人:广州唯品会信息科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1