一种消息传输系统及方法与流程

文档序号:26556010发布日期:2021-09-08 00:53阅读:92来源:国知局
一种消息传输系统及方法与流程

1.本发明涉及通信技术领域,特别是涉及一种消息传输系统及方法。


背景技术:

2.在目前的消息系统中,生产端与消息中间件按照规定的协议,比如java消息服务(java message service,jms)协议,建立通信连接,且消费端按照相同的协议与消息中间件建立通信连接。生产端和消费端之间可通过消息中间件进行序列化的消息传递。
3.为了实现序列化的消息传递,针对每种业务场景,需分别对生产端和消费端进行配置,以使得生产端和消费端可以对序列化的消息进行发送和监听,配置的代码较为复杂,导致开发效率低。


技术实现要素:

4.本发明实施例的目的在于提供一种消息传输系统及方法,以提高开发效率。具体技术方案如下:
5.第一方面,本技术实施例提供一种消息传输系统,所述系统中包括生产端、消息中间件和消费端;
6.所述生产端,用于代理指定文件包中的生产消息注解的方法,基于所述生产消息注解包括的第一注解配置参数构建业务消息,向消息中间件的目标消息队列发送所述业务消息;其中,所述第一注解配置参数包括方法签名和目标消息队列标识,所述业务消息携带所述方法签名;
7.所述消息中间件,用于接收所述业务消息,并将所述业务消息存储于所述目标消息队列标识对应的目标消息队列;
8.所述消费端,用于从所述指定文件包中的消费消息注解包括的第二注解配置参数获取需监听的目标消息队列标识,当从所述目标消息队列标识对应的目标消息中监听到业务消息时,代理所述指定文件包中的消费消息注解的方法解析所述业务消息中携带的方法签名,根据所述方法签名对应的方法处理所述业务消息。
9.在一种可能的实现方式中,所述生产端,还用于从所述指定文件包中识别所述生产消息注解,解析所述生产消息注解得到所述生产消息注解包括的所述第一注解配置参数,根据所述第一注解配置参数建立与所述消息中间件的目标消息队列之间的第一通信连接;
10.所述生产端,具体用于通过所述第一通信连接,向所述消息中间件发送所述业务消息;
11.所述消费端,还用于识别所述消费消息注解,解析所述消费消息注解得到所述消费消息注解包括的所述第二注解配置参数,根据所述第二注解配置参数建立与所述消息中间件的目标消息队列之间的第二通信连接;
12.所述消费端,还用于通过所述第二通信连接从所述消息中间件的目标消息队列中
读取所述业务消息。
13.在一种可能的实现方式中,所述第一注解配置参数还包括生产组标识,所述第二注解配置参数还包括消费组标识;
14.所述生产端,具体用于建立所述生产组标识对应的生产组中,所述目标消息队列标识对应的目标消息队列之间的第一通信连接;
15.所述消费端,具体用于建立与所述消费组标识对应的消费组中,所述目标消息队列标识对应的目标消息队列之间的第二通信连接。
16.在一种可能的实现方式中,所述第一注解配置参数还包括:消息应答类型和数据解析格式;
17.所述生产端,具体用于将所述第一注解配置参数包括的所述方法签名、所述消息应答类型和所述数据解析格式构造为所述业务消息的上下文信息;根据所述上下文信息和业务消息内容构建所述业务消息;
18.所述消费端,具体用于解析所述业务消息的上下文信息,获取所述上下文信息包括的所述方法签名、所述消息应答类型和所述数据解析格式;根据所述数据解析格式解析所述业务消息得到所述消息内容,代理所述方法签名对应的方法处理所述消息内容,并根据所述消息应答类型对所述业务消息进行应答。
19.在一种可能的实现方式中,所述消费端,具体用于根据所述上下文信息包括的方法签名对所述业务消息进行验证,若验证失败,则丢弃所述业务消息;若验证成功,则通过所述消费组名对应的处理方法对经过反序列化处理的消息内容进行处理。
20.第二方面,本技术实施例提供一种消息传输方法,所述方法应用于消息传输系统中的生产端,所述消息传输系统还包括消息中间件和消费端;所述方法包括:
21.代理指定文件包中的生产消息注解的方法,基于所述生产消息注解包括的第一注解配置参数构建业务消息,所述第一注解配置参数包括方法签名;
22.向消息中间件的目标消息队列发送所述业务消息,以使得所述消息中间件将所述业务消息存储于所述目标消息队列标识对应的目标消息队列;其中,所述业务消息携带所述方法签名,所述目标消息队列用于被所述消费端监听,以使得所述消费端监听到所述目标消息队列中存在业务消息时,代理所述指定文件包中的消费消息注解的方法解析所述业务消息中携带的方法签名,根据所述方法签名对应的方法处理所述业务消息。
23.在一种可能的实现方式中,在所述代理指定文件包中的生产消息注解的方法,基于所述生产消息注解包括的第一注解配置参数构建业务消息之前,所述方法还包括:
24.从所述指定文件包中识别所述生产消息注解;
25.解析所述生产消息注解得到所述生产消息注解包括的所述第一注解配置参数;
26.根据所述第一注解配置参数建立与所述消息中间件的目标消息队列之间的第一通信连接;
27.所述向消息中间件的目标消息队列发送所述业务消息,包括:
28.通过所述第一通信连接,向所述消息中间件发送所述业务消息。
29.在一种可能的实现方式中,所述第一注解配置参数还包括生产组标识;
30.所述根据所述第一注解配置参数建立与所述消息中间件的目标消息队列之间的第一通信连接,包括:
31.建立与所述生产组标识对应的生产组中,所述目标消息队列标识对应的目标消息队列之间的第一通信连接。
32.在一种可能的实现方式中,所述第一注解配置参数还包括:消息应答类型和数据解析格式;
33.所述基于所述生产消息注解包括的第一注解配置参数构建业务消息,包括:
34.将所述第一注解配置参数包括的所述方法签名、所述消息应答类型和所述数据解析格式构造为所述业务消息的上下文信息;
35.根据所述上下文信息和业务消息内容构建所述业务消息。
36.第三方面,本技术实施例还提供一种消息传输方法,所述方法应用于消息传输系统中的消费端,所述消息传输系统还包括消息中间件和消费端,所述方法包括:
37.从所述指定文件包中的消费消息注解包括的第二注解配置参数获取需监听的目标消息队列标识;
38.当从消息中间件中,所述目标消息队列标识对应的目标消息中监听到业务消息时,代理所述指定文件包中的消费消息注解的方法解析所述业务消息中携带的方法签名,所述业务消息为所述生产端基于所述指定文件包中的生产消息注解包括的第一注解配置参数构建,所述第一注解参数包括所述方法签名和所述目标消息队列标识;
39.根据所述方法签名对应的方法处理所述业务消息。
40.在一种可能的实现方式中,在从所述指定文件包中的消费消息注解包括的第二注解配置参数获取需监听的目标消息队列标识之前,所述方法还包括:
41.识别所述消费消息注解;
42.解析所述消费消息注解得到所述消费消息注解包括的所述第二注解配置参数;
43.根据所述第二注解配置参数建立与所述消息中间件的目标消息队列之间的第二通信连接;
44.在所述从所述指定文件包中的消费消息注解包括的第二注解配置参数获取需监听的目标消息队列标识之后,所述方法还包括:
45.当从消息中间件中,所述目标消息队列标识对应的目标消息中监听到业务消息时,通过所述第二通信连接从所述消息中间件的目标消息队列中读取所述业务消息。
46.在一种可能的实现方式中,所述第二注解配置参数还包括消费组标识;
47.所述根据所述第二注解配置参数建立与所述消息中间件的目标消息队列之间的第二通信连接,包括:
48.建立与所述消费组标识对应的消费组中,所述目标消息队列标识对应的目标消息队列之间的第二通信连接。
49.在一种可能的实现方式中,所述第一注解配置参数还包括:消息应答类型和数据解析格式;
50.所述根据所述方法签名对应的方法处理所述业务消息,包括:
51.解析所述业务消息的上下文信息;
52.获取所述上下文信息包括的所述方法签名、所述消息应答类型和所述数据解析格式;
53.根据所述数据解析格式解析所述业务消息得到所述消息内容;
54.代理所述方法签名对应的方法处理所述消息内容,并根据所述消息应答类型对所述业务消息进行应答。
55.在一种可能的实现方式中,在获取所述上下文信息包括的所述方法签名、所述消息应答类型和所述数据解析格式之后,所述方法还包括:
56.根据所述上下文信息包括的方法签名对所述业务消息进行验证;
57.若验证失败,则丢弃所述业务消息;
58.若验证成功,则通过所述消费组名对应的处理方法对经过反序列化处理的消息内容进行处理。
59.第四方面,本技术实施例提供一种消息传输装置,所述装置应用于消息传输系统中的生产端,所述消息传输系统还包括消息中间件和消费端;所述装置包括:
60.构建模块,用于代理指定文件包中的生产消息注解的方法,基于所述生产消息注解包括的第一注解配置参数构建业务消息,所述第一注解配置参数包括方法签名;
61.发送模块,用于向消息中间件的目标消息队列发送所述业务消息,以使得所述消息中间件将所述业务消息存储于所述目标消息队列标识对应的目标消息队列;其中,所述业务消息携带所述方法签名,所述目标消息队列用于被所述消费端监听,以使得所述消费端监听到所述目标消息队列中存在业务消息时,代理所述指定文件包中的消费消息注解的方法解析所述业务消息中携带的方法签名,根据所述方法签名对应的方法处理所述业务消息。
62.在一种可能的实现方式中,所述装置还包括:
63.识别模块,用于从所述指定文件包中识别所述生产消息注解;
64.解析模块,用于解析所述生产消息注解得到所述生产消息注解包括的所述第一注解配置参数;
65.建立模块,用于根据所述第一注解配置参数建立与所述消息中间件的目标消息队列之间的第一通信连接;
66.所述发送模块,具体用于通过所述第一通信连接,向所述消息中间件发送所述业务消息。
67.在一种可能的实现方式中,所述第一注解配置参数还包括生产组标识;
68.所述建立模块,具体用于建立与所述生产组标识对应的生产组中,所述目标消息队列标识对应的目标消息队列之间的第一通信连接。
69.在一种可能的实现方式中,所述第一注解配置参数还包括:消息应答类型和数据解析格式;
70.所述构建模块,具体用于:
71.将所述第一注解配置参数包括的所述方法签名、所述消息应答类型和所述数据解析格式构造为所述业务消息的上下文信息;
72.根据所述上下文信息和业务消息内容构建所述业务消息。
73.第五方面,本技术实施例提供一种消息传输装置,所述装置应用于消息传输系统中的消费端,所述消息传输系统还包括消息中间件和消费端,所述装置包括:
74.获取模块,用于从所述指定文件包中的消费消息注解包括的第二注解配置参数获取需监听的目标消息队列标识;
75.解析模块,用于当从消息中间件中,所述目标消息队列标识对应的目标消息中监听到业务消息时,代理所述指定文件包中的消费消息注解的方法解析所述业务消息中携带的方法签名,所述业务消息为所述生产端基于所述指定文件包中的生产消息注解包括的第一注解配置参数构建,所述第一注解参数包括所述方法签名和所述目标消息队列标识;
76.处理模块,用于根据所述方法签名对应的方法处理所述业务消息。
77.在一种可能的实现方式中,所述装置还包括:
78.识别模块,用于识别所述消费消息注解;
79.所述解析模块,还用于解析所述消费消息注解得到所述消费消息注解包括的所述第二注解配置参数;
80.建立模块,用于根据所述第二注解配置参数建立与所述消息中间件的目标消息队列之间的第二通信连接;
81.读取模块,用于当从消息中间件中,所述目标消息队列标识对应的目标消息中监听到业务消息时,通过所述第二通信连接从所述消息中间件的目标消息队列中读取所述业务消息。
82.在一种可能的实现方式中,所述第二注解配置参数还包括消费组标识;
83.所述建立模块,具体用于建立与所述消费组标识对应的消费组中,所述目标消息队列标识对应的目标消息队列之间的第二通信连接。
84.在一种可能的实现方式中,所述第一注解配置参数还包括:消息应答类型和数据解析格式;
85.所述处理模块,具体用于:
86.解析所述业务消息的上下文信息;
87.获取所述上下文信息包括的所述方法签名、所述消息应答类型和所述数据解析格式;
88.根据所述数据解析格式解析所述业务消息得到所述消息内容;
89.代理所述方法签名对应的方法处理所述消息内容,并根据所述消息应答类型对所述业务消息进行应答。
90.在一种可能的实现方式中,所述装置还包括:
91.验证模块,用于根据所述上下文信息包括的方法签名对所述业务消息进行验证;
92.丢弃模块,用于若所述验证模块的验证结果为验证失败,则丢弃所述业务消息;
93.处理模块,用于若所述验证模块的验证结果为验证成功,则通过所述消费组名对应的处理方法对经过反序列化处理的消息内容进行处理。
94.第六方面,本技术实施例还提供一种电子设备,该电子设备可以为生产端或消费端,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
95.存储器,用于存放计算机程序;
96.处理器,用于执行存储器上所存放的程序时,实现上述第二方面或第三方面中所述的消息传输方法步骤。
97.第七方面,本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第二方面或第三方面中所
述的消息传输方法。
98.第八方面,本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面或第三方面中所述的消息传输方法。
99.采用上述技术方案,因指定文件包中包括生产消息注解和消费消息注解,使得生产端可以代理指定文件包中的生产消息注解的方法,根据生产消息主机包括的第一注解配置参数构建业务消息,并向消息中间件的目标消息队列发送业务消息。相应地,消费端也可以代理指定文件包中的消费注解的方法解析业务消息队列中携带的方法签名,进而可以直接根据该方法签名对应的方法处理该业务消息。可见,采用该方法,通过在指定数据包中增加注解的方式即可实现生产端与消费端之间的通信,通过在注解中配置不同的方法签名,即可实现对不同业务的处理,而无需针对每种业务场景为生产端和消费端配置复杂的代码,可以简化开发过程,提高开发效率。
附图说明
100.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
101.图1为本发明实施例提供的一种消息传输系统的结构示意图;
102.图2为本发明实施例提供的一种消息传输方法的流程图;
103.图3为本发明实施例提供的另一种消息传输方法的流程图;
104.图4为本发明实施例提供的一种消息传输方法的示例性流程图;
105.图5为本发明实施例提供的一种消息传输装置的结构示意图;
106.图6为本发明实施例提供的另一种消息传输装置的结构示意图;
107.图7为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
108.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
109.如图1所示,本发明实施例提供了一种消息传输系统,该系统中包括:生产端101、消息中间件102和消费端103;
110.其中,生产端101,用于代理指定文件包中的生产消息注解的方法,基于所述生产消息注解包括的第一注解配置参数构建业务消息,向消息中间件的目标消息队列发送所述业务消息;其中,所述第一注解配置参数包括方法签名和目标消息队列标识,所述业务消息携带所述方法签名。
111.消息中间件102,用于接收业务消息,并将业务消息存储于目标消息队列标识对应的目标消息队列。
112.消费端103,用于从所述指定文件包中的消费消息注解包括的第二注解配置参数获取需监听的目标消息队列标识,当从所述目标消息队列标识对应的目标消息中监听到业务消息时,代理所述指定文件包中的消费消息注解的方法解析所述业务消息中携带的方法签名,根据所述方法签名对应的方法处理所述业务消息。
113.本技术实施例提供的消息传输系统,因指定文件包中包括生产消息注解和消费消息注解,使得生产端可以代理指定文件包中的生产消息注解的方法,根据生产消息主机包
括的第一注解配置参数构建业务消息,并向消息中间件的目标消息队列发送业务消息。相应地,消费端也可以代理指定文件包中的消费注解的方法解析业务消息队列中携带的方法签名,进而可以直接根据该方法签名对应的方法处理该业务消息。可见,采用该方法,通过在指定数据包中增加注解的方式即可实现生产端与消费端之间的通信,通过在注解中配置不同的方法签名,即可实现对不同业务的处理,而无需针对每种业务场景为生产端和消费端配置复杂的代码,可以简化开发过程,提高开发效率。
114.在本发明实施例中,指定文件包为公共common

jar包,公共common

jar包是自定义的协议封装工具。指定文件包中包括生产消息注解@asyncpmq和消费消息注解@asynccmq。其中,生产消息注解包括上述第一注解配置参数,可选地,第一注解配置参数包括方法签名(method

sign)和目标消息队列标识(topic)。该目标消息队列标识具体可以为目标消息队列的队列名。
115.作为示例,指定文件包中包括的生产消息注解的方法可以为生成字符串a的方法,生产端101可以代理该方法从而生成字符串a,并将字符串a作为消息内容封装到上述业务消息,且业务消息中携带的方法签名为生成字符串a的方法的签名。进而,生产端101将该业务消息发送到消息中间件102的目标消息队列。相应地,消费端103可以监听到该业务消息,并根据该业务消息中携带的方法签名确定所需代理的方法,进而代理该方法签名对应的方法处理该业务消息。
116.在本发明另一实施例中,生产端101,还用于从指定文件包中识别生产消息注解,解析该生产消息注解得到生产消息注解包括的第一注解配置参数,根据第一注解配置参数建立与消息中间件的目标消息队列之间的第一通信连接;
117.其中,第一注解配置参数还包括生产组标识。生产端101,具体用于建立生产组标识对应的生产组中,目标消息队列标识对应的目标消息队列之间的第一通信连接。
118.可选地,生产端101中引用上述指定文件包的服务启动时可以扫描指定文件包中指定包路径下的声明@asyncpmq的方法,比如上述生成字符串a的方法,从而获取并解析生产消息注解的配置项,从而得到上述第一注解配置参数,然后生产端101根据第一注解配置参数创建代理类的实体,将创建的代理类的实体存在内存中,进而,当生产消息注解的方法被调用时,生产端101可以代理生产消息注解的方法构建上述业务消息。
119.生产端101,具体还用于通过第一通信连接,向消息中间件发送业务消息。
120.生产端101具体可以通过第一通信连接向消息中间件中的目标队列发送业务消息,以使得消费端103可以从目标队列中获取业务消息。
121.消费端103,还用于在识别消费消息注解,解析消费消息注解得到消费消息注解包括的第二注解配置参数,根据第二注解配置参数建立与消息中间件的目标消息队列之间的第二通信连接。
122.其中,第二注解配置参数还包括消费组标识。消费端103,具体用于建立与消费组标识对应的消费组中,目标队列标识对应的目标消息队列之间的第二通信连接。
123.消费端103,还用于通过第二通信连接从消息中间件的目标消息队列中读取业务消息。消费端103,在监听到业务消息后,可以通过aop拦截该业务消息,从而获取该业务消息并对该业务消息进行后续处理。
124.在本技术另一实施例中,第一注解配置参数还包括:消息应答类型和数据解析格
式。
125.生产端101,具体用于将第一注解配置参数包括的方法签名、消息应答类型和数据解析格式构造为业务消息的上下文信息;根据上下文信息和业务消息内容构建业务消息;
126.其中,消息应答类型值可以为自动应答或者为处理业务消息后应答。
127.业务消息包括上下文信息和消息体,消息体包括上述业务消息内容。
128.消费端103,具体用于解析业务消息的上下文信息,获取上下文信息包括的方法签名、消息应答类型和数据解析格式;根据数据解析格式解析业务消息得到所述消息内容,代理方法签名对应的方法处理消息内容,并根据消息应答类型对业务消息进行应答。
129.作为示例,本技术实施例的生产消息注解中包括:
130.public@interface asyncpmq{
131.string topic();//用于指定目标消息队列标识
132.string group();//用于指定生产组标识
133.string ack_type();//用于指定应答类型
134.string method_sign();//用于指定方法签名
135.}
136.本技术实施例的消费消息注解中包括:
137.public@interface asyncpmq{
138.string topic();//用于指定目标消息队列标识
139.string group();//用于指定消费组标识
140.string ack_type();//用于指定应答类型
141.string method_sign();//用于指定方法签名
142.}
143.在本技术另一实施例中,消费端103,具体用于根据上下文信息包括的方法签名对业务消息进行验证,若验证失败,则丢弃业务消息;若验证成功,则通过消费组名对应的处理方法对所经过反序列化处理的消息内容进行处理。
144.可选地,消费端103在接收到业务消息时,可以获取该业务消息的id,若自身已接收到相同id的业务消息,则丢弃此次接收到的业务消息。此外,消费端在接收到业务消息时,可以获取该业务消息的时间戳,通过该时间戳判断该业务消息是否为旧消息,若确定该业务消息为旧消息,则丢弃该业务消息。从而避免了业务消息被消费端重复处理。
145.如图2所示,本技术实施例还提供一种消息传输方法,该方法应用于消息传输系统中的生产端,消息传输系统中还包括消息中间件和消费端,该方法包括:
146.s201、代理指定文件包中的生产消息注解的方法,基于生产消息注解包括的第一注解配置参数构建业务消息。
147.其中,第一注解配置参数包括方法签名和目标消息队列标识,业务消息携带方法签名。
148.s202、向消息中间件的目标消息队列发送业务消息,以使得消息中间件将业务消息存储于目标消息队列标识对应的目标消息队列。
149.其中,业务消息携带方法签名,目标消息队列用于被消费端监听,以使得消费端监听到目标消息队列中存在业务消息时,代理指定文件包中的消费消息注解的方法解析业务
消息中携带的方法签名,根据方法签名对应的方法处理业务消息。
150.本发明实施例提供的消息传输方法,因为指定文件包中包括生产消息注解,生产端可以从指定文件包中获取生产消息注解包括的第一注解配置参数,从而代理指定文件包中的生产消息注解的方法,基于该第一注解配置参数构建业务消息,并实现与消息中间件之间的消息传递。采用该方法,无需针对每种业务场景为生产端和消费端配置复杂的代码,通过注解的方式可以简化配置,提高了开发效率。
151.在本技术另一实施例中,在上述s201,代理指定文件包中的生产消息注解的方法,基于生产消息注解包括的第一注解配置参数构建业务消息之前,该方法还包括:
152.从指定文件包中识别生产消息注解,解析生产消息注解得到生产消息注解包括的第一注解配置参数,根据第一注解配置参数建立与消息中间件的目标消息队列之间的第一通信连接。
153.可选地,上述第一注解配置参数还包括生产组标识。在此基础上,根据所述第一注解配置参数建立与消息中间件的目标消息队列之间的第一通信连接,可以实现为:建立与生产组标识对应的生产组中,目标消息队列标识对应的目标消息队列之间的第一通信连接。
154.相应地,上述s202、向消息中间件的目标消息队列发送业务消息,可以实现为:通过第一通信连接,向消息中间件发送业务消息。
155.在本技术另一实施例中,上述第一注解配置参数还包括:消息应答类型和数据解析格式。
156.上述s201中,基于生产消息注解包括的第一注解配置参数构建业务消息,包括:
157.将第一注解配置参数包括的方法签名、消息应答类型和数据解析格式构造为业务消息的上下文信息,然后根据上下文信息和业务消息内容构建业务消息。
158.如图3所示,本技术实施例还提供一种消息传输方法,该方法应用于消息传输系统中的消费端,消息传输系统中还包括消息中间件和生产端,该方法包括:
159.s301、从指定文件包中的消费消息注解包括的第二注解配置参数获取需监听的目标消息队列标识。
160.s302、当从消息中间件中,目标消息队列标识对应的目标消息中监听到业务消息时,代理指定文件包中的消费消息注解的方法解析业务消息中携带的方法签名。
161.其中,业务消息为生产端基于指定文件包中的生产消息注解包括的第一注解配置参数构建,第一注解参数包括方法签名和目标消息队列标识。
162.s303、根据方法签名对应的方法处理业务消息。
163.本技术实施例提供的消息传输方法,因为指定文件包中包括消费消息注解,消费端可以从指定文件包中获取消费消息注解包括的第二注解配置参数,从而基于第二注解配置参数确定需监听的目标队列,并监听业务消息实现与消息中间件之间的消息传递,且可通过业务消息携带的方法签名对应的方法处理业务消息。可见,采用该方法,无需针对每种业务场景为生产端和消费端配置复杂的代码,通过注解的方式可以简化配置,提高了开发效率。
164.在一种可能的实现方式中,在上述s301、从指定文件包中的消费消息注解包括的第二注解配置参数获取需监听的目标消息队列标识之前,该方法还包括:
165.识别消费消息注解;解析消费消息注解得到消费消息注解包括的第二注解配置参数;根据第二注解配置参数建立与消息中间件的目标消息队列之间的第二通信连接。
166.可选地,第二注解配置参数还包括消费组标识。在此基础上,根据第二注解配置参数建立与消息中间件的目标消息队列之间的第二通信连接,可以实现为:建立与消费组标识对应的消费组中,目标消息队列标识对应的目标消息队列之间的第二通信连接。
167.相应地,在上述s301之后,该方法还包括:
168.当从消息中间件中,目标消息队列标识对应的目标消息中监听到业务消息时,通过第二通信连接从消息中间件的目标消息队列中读取业务消息。
169.在本发明另一实施例中,第一注解配置参数还包括:消息应答类型和数据解析格式;
170.上述s303、根据方法签名对应的方法处理业务消息,包括:
171.解析业务消息的上下文信息,获取上下文信息包括的方法签名、消息应答类型和数据解析格式,根据数据解析格式解析业务消息得到消息内容,代理方法签名对应的方法处理消息内容,并根据消息应答类型对业务消息进行应答。
172.在获取上下文信息包括的方法签名、消息应答类型和数据解析格式之后,还可以对业务消息进行验证,具体可以根据上下文信息包括的方法签名对业务消息进行验证;若验证失败,则丢弃业务消息;若验证成功,则通过消费组名对应的处理方法对经过反序列化处理的消息内容进行处理。
173.以下结合图4对本发明实施例提供的消息传输方法进行说明,如图4所示,生产端可以通过扫描指定文件包中指定包路径下的声明@asyncpmq的方法,将注解@asyncpmq的方法类进行动态代理,并得到第一注解配置参数,基于第一注解参数构造业务消息的上下文,进而构造业务消息。其中,业务消息包括topic、group、ack

type、method

sign、data。并且生产端可以根据集群地址、消息协议建立与消息中间件的目标消息队列之间的通信,从而向消息中间件的目标消息队列发送业务消息。
174.相应地,消费端可以将可以通过扫描指定文件包中指定包路径下的声明@asyncrmq的方法,将注解@asyncrmq的方法类进行动态代理,并得到第二注解配置参数。根据集群地址、消息协议与消息中间件中的目标消息队列之间建立通信,并且监听以及拦截目标消息队列中的业务消息。在得到业务消息后,解析该业务消息,得到业务消息的上下文信息,对方法签名进行验证,验证通过后,动态代理方法签名对应的处理方法处理业务消息,然后根据上下文信息携带的应答方式完成对业务消息的应答。图4中示例性地示出了3个消息中间件,在实际实现中,消息中间件的数量不限于此。
175.基于相同的发明构思,本技术实施例还提供一种消息传输装置,该装置应用于消息传输系统中的生产端,消息传输系统还包括消息中间件和消费端;如图5所示,该装置包括:
176.构建模块501,用于代理指定文件包中的生产消息注解的方法,基于生产消息注解包括的第一注解配置参数构建业务消息,第一注解配置参数包括方法签名;
177.发送模块502,用于向消息中间件的目标消息队列发送业务消息,以使得消息中间件将业务消息存储于目标消息队列标识对应的目标消息队列;其中,业务消息携带方法签名,目标消息队列用于被消费端监听,以使得消费端监听到目标消息队列中存在业务消息
时,代理指定文件包中的消费消息注解的方法解析业务消息中携带的方法签名,根据方法签名对应的方法处理业务消息。
178.在本技术另一实施例中,该装置还包括:
179.识别模块,用于从指定文件包中识别生产消息注解;
180.解析模块,用于解析生产消息注解得到生产消息注解包括的第一注解配置参数;
181.建立模块,用于根据第一注解配置参数建立与消息中间件的目标消息队列之间的第一通信连接;
182.发送模块502,具体用于通过第一通信连接,向消息中间件发送业务消息。
183.可选地,第一注解配置参数还包括生产组标识;
184.建立模块,具体用于建立与生产组标识对应的生产组中,目标消息队列标识对应的目标消息队列之间的第一通信连接。
185.可选地,第一注解配置参数还包括:消息应答类型和数据解析格式;该装置还包括:
186.构建模块501,具体用于:
187.将第一注解配置参数包括的方法签名、消息应答类型和数据解析格式构造为业务消息的上下文信息;
188.根据上下文信息和业务消息内容构建业务消息。
189.基于相同的发明构思,本技术实施例还提供一种消息传输装置,该装置应用于消息传输系统中的消费端,消息传输系统还包括消息中间件和消费端,如图6所示,该装置包括:
190.获取模块601,用于从指定文件包中的消费消息注解包括的第二注解配置参数获取需监听的目标消息队列标识;
191.解析模块602,用于当从消息中间件中,目标消息队列标识对应的目标消息中监听到业务消息时,代理指定文件包中的消费消息注解的方法解析业务消息中携带的方法签名,业务消息为生产端基于指定文件包中的生产消息注解包括的第一注解配置参数构建,第一注解参数包括方法签名和目标消息队列标识;
192.处理模块603,用于根据方法签名对应的方法处理业务消息。
193.可选地,该装置还包括:
194.识别模块,用于识别消费消息注解;
195.解析模块,还用于解析消费消息注解得到消费消息注解包括的第二注解配置参数;
196.建立模块,用于根据第二注解配置参数建立与消息中间件的目标消息队列之间的第二通信连接;
197.读取模块,用于当从消息中间件中,目标消息队列标识对应的目标消息中监听到业务消息时,通过第二通信连接从消息中间件的目标消息队列中读取业务消息。
198.可选地,第二注解配置参数还包括消费组标识;该装置还包括:
199.建立模块,具体用于建立与消费组标识对应的消费组中,目标消息队列标识对应的目标消息队列之间的第二通信连接。
200.可选地,第一注解配置参数还包括:消息应答类型和数据解析格式;
201.处理模块603,具体用于:
202.解析业务消息的上下文信息;
203.获取上下文信息包括的方法签名、消息应答类型和数据解析格式;
204.根据数据解析格式解析业务消息得到消息内容;
205.代理方法签名对应的方法处理消息内容,并根据消息应答类型对业务消息进行应答。
206.可选地,该装置还包括:
207.验证模块,用于根据上下文信息包括的方法签名对业务消息进行验证;
208.丢弃模块,用于若验证模块的验证结果为验证失败,则丢弃业务消息;
209.处理模块603,用于若验证模块的验证结果为验证成功,则通过消费组名对应的处理方法对经过反序列化处理的消息内容进行处理。
210.本发明实施例还提供了一种电子设备,该电子设备可以为生产端或者消费端,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信。
211.存储器703,用于存放计算机程序。
212.处理器701,用于执行存储器703上所存放的程序时,实现上述方法实施例中的方法步骤。
213.上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
214.通信接口用于上述电子设备与其他设备之间的通信。
215.存储器可以包括随机存取存储器(random access memory,简称ram),也可以包括非易失性存储器(non

volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
216.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(应用程序lication specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
217.在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中任一消息传输方法。
218.在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一消息传输方法。
219.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计
算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
220.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
221.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
222.以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1