首页 / 专利库 / 计算机网络 / 高级消息队列协议 / 一种业务消息处理方法及装置

一种业务消息处理方法及装置

阅读:157发布:2020-05-31

专利汇可以提供一种业务消息处理方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 实施例 公开了一种业务消息处理方法及装置,应用于微服务模 块 。微服务模块所在的系统还包括消息调度模块和消息总线。方法包括:监听消息总线上发布的业务消息;在业务消息的消息类型为微服务模块在消息总线上订阅的消息类型时,根据消息类型对业务消息进行处理;将处理后得到的业务消息发布给消息总线,以使订阅处理后得到的业务消息的消息类型的其他微服务模块监听到处理后得到的业务消息时,处理上述处理后得到的业务消息,或者消息调度模块确定处理后得到的业务消息为结果类消息时推送给客户端。本发明实施例可提高微服务应用的容错性和扩展性。,下面是一种业务消息处理方法及装置专利的具体信息内容。

1.一种业务消息处理方法,其特征在于,应用于微服务模,所述微服务模块所在的系统还包括消息调度模块和消息总线,所述方法包括:
监听所述消息总线上发布的业务消息,所述业务消息为客户端发送给所述消息调度模块,并由所述消息调度模块发布给所述消息总线的,或者为所述系统中的其他微服务模块发布给所述消息总线的;
在所述业务消息的消息类型为所述微服务模块在所述消息总线上订阅的消息类型时,根据所述消息类型对所述业务消息进行处理;
将处理后得到的业务消息发布给所述消息总线,以使订阅所述处理后得到的业务消息的消息类型的其他微服务模块监听到所述处理后得到的业务消息时,处理所述处理后得到的业务消息,或者所述消息调度模块确定所述处理后得到的业务消息为结果类消息时推送给所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述监听所述消息总线上发布的业务消息,具体包括:
通过高级消息队列协议监听所述消息总线上发布的业务消息。
3.根据权利要求1所述的方法,其特征在于,所述根据所述消息类型对所述业务消息进行处理,具体包括:
在根据所述消息类型确定不需要其他微服务模块协同处理时,对所述业务消息进行处理,得到对应的结果类消息。
4.根据权利要求1所述的方法,其特征在于,所述根据所述消息类型对所述业务消息进行处理,具体包括:
在根据所述消息类型确定需要其他微服务模块协同处理时,确定需要协同处理的其他微服务模块;
构建消息类型为确定的微服务模块订阅的消息类型的业务消息;
对所述业务消息进行处理,得到对应的结果类消息;
将构建的业务消息和所述结果类消息作为处理后得到的业务消息。
5.一种业务消息处理装置,其特征在于,应用于微服务模块,所述微服务模块所在的系统还包括消息调度模块和消息总线,所述装置包括:监听单元、处理单元和发布单元,其中,所述监听单元,用于监听所述消息总线上发布的业务消息,所述业务消息为客户端发送给所述消息调度模块,并由所述消息调度模块发布给所述消息总线的,或者为所述系统中的其他微服务模块发布给所述消息总线的;
所述处理单元,用于在所述业务消息的消息类型为所述微服务模块在所述消息总线上订阅的消息类型时,根据所述消息类型对所述业务消息进行处理;
所述发布单元,用于将处理后得到的业务消息发布给所述消息总线,以使订阅所述处理后得到的业务消息的消息类型的其他微服务模块监听到所述处理后得到的业务消息时,处理所述处理后得到的业务消息,或者所述消息调度模块确定所述处理后得到的业务消息为结果类消息时推送给所述客户端。
6.根据权利要求5所述的装置,其特征在于,所述监听单元,具体用于:
通过高级消息队列协议监听所述消息总线上发布的业务消息。
7.根据权利要求5所述的装置,其特征在于,所述处理单元,具体用于:
在所述业务消息的消息类型为所述微服务模块在所述消息总线上订阅的消息类型时,在根据所述消息类型确定不需要其他微服务模块协同处理时,对所述业务消息进行处理,得到对应的结果类消息。
8.根据权利要求5所述的装置,其特征在于,所述处理单元,具体用于:
在根据所述消息类型确定需要其他微服务模块协同处理时,确定需要协同处理的其他微服务模块;
构建消息类型为确定的微服务模块订阅的消息类型的业务消息;
对所述业务消息进行处理,得到对应的结果类消息;
将构建的业务消息和所述结果类消息作为处理后得到的业务消息。

说明书全文

一种业务消息处理方法及装置

技术领域

[0001] 本发明涉及通信技术领域,特别涉及一种业务消息处理方法及装置。

背景技术

[0002] 微服务应用是由一组微服务模构建的一个应用,各个微服务微模块以独立的进程运行,即各个微服务模块独立部署,并且,微服务模块之间可以相互通信。
[0003] 目前,微服务应用中的各个微服务模块在进行业务消息处理过程中,各个微服务模块之间主要通过REST(Representational State Transfer,表述性状态传递)方式和RPC(Remote Procedure Call Protocol,远程过程调用协议)方式进行通信。
[0004] 以各个微服务模块之间通过REST方式进行通信为例。假设,微服务应用包括4个微服务模块,分别为微服务模块1、微服务模块2、微服务模块3和微服务模块4,假设路由设备或者网关接收到来自客户端的业务消息后,需要发往微服务模块1处理,而微服务模块1依据业务消息确定出需要微服务模块2、微服务模块3和微服务模块4协同处理才能反馈给客户端最终结果,而微服务模块2又需要微服务模块4协同处理,微服务模块3也需要微服务模块4协同处理。那么,微服务模块1需要先与微服务模块2交互,交互之后,微服务模块2与微服务模块4交互,微服务模块2将交互后的处理结果反馈给微服务模块1;微服务模块1再与微服务模块3交互,交互之后,微服务模块3与微服务模块4交互,微服务模块3将交互后的处理结果反馈给微服务模块1;微服务模块1最后与微服务模块4交互,微服务模块4将交互后的处理结果反馈给微服务模块1;最后,微服务模块1依据收集的处理结果向客户端反馈最终结果。上述4个微服务模块通信交互如图1所示。
[0005] 可见,在上述这种业务消息处理过程中,各个微服务模块之间需要协同处理时,相互依赖。一旦其中一个微服务模块发生阻塞,就会造成整个业务处理失败,容错性较差;并且当微服务应用需要增加新功能对应的微服务模块(微服务扩展)时,其他微服务模块可能依赖于这个新扩展的微服务模块,那么就需要改动这些微服务模块的业务逻辑。随着微服务的扩展,业务逻辑也需要不断的随着改变,微服务应用的扩展性不强。

发明内容

[0006] 本发明实施例的目的在于提供一种业务消息处理方法及装置,以提高微服务应用的容错性和扩展性。
[0007] 为达到上述目的,本发明实施例公开了一种业务消息处理方法,应用于微服务模块,所述微服务模块所在的系统还包括消息调度模块和消息总线,所述方法包括:
[0008] 监听所述消息总线上发布的业务消息,所述业务消息为客户端发送给所述消息调度模块,并由所述消息调度模块发布给所述消息总线的,或者为所述系统中的其他微服务模块发布给所述消息总线的;
[0009] 在所述业务消息的消息类型为所述微服务模块在所述消息总线上订阅的消息类型时,根据所述消息类型对所述业务消息进行处理;
[0010] 将处理后得到的业务消息发布给所述消息总线,以使订阅所述处理后得到的业务消息的消息类型的其他微服务模块监听到所述处理后得到的业务消息时,处理所述处理后得到的业务消息,或者所述消息调度模块确定所述处理后得到的业务消息为结果类消息时推送给所述客户端。
[0011] 为达到上述目的,本发明实施例公开了一种业务消息处理装置,应用于微服务模块,所述微服务模块所在的系统还包括消息调度模块和消息总线,所述装置包括:监听单元、处理单元和发布单元,其中,
[0012] 所述监听单元,用于监听所述消息总线上发布的业务消息,所述业务消息为客户端发送给所述消息调度模块,并由所述消息调度模块发布给所述消息总线的,或者为所述系统中的其他微服务模块发布给所述消息总线的;
[0013] 所述处理单元,用于在所述业务消息的消息类型为所述微服务模块在所述消息总线上订阅的消息类型时,根据所述消息类型对所述业务消息进行处理;
[0014] 所述发布单元,用于将处理后得到的业务消息发布给所述消息总线,以使订阅所述处理后得到的业务消息的消息类型的其他微服务模块监听到所述处理后得到的业务消息时,处理所述处理后得到的业务消息,或者所述消息调度模块确定所述处理后得到的业务消息为结果类消息时推送给所述客户端。
[0015] 由上述的技术方案见可见,各个微服务模块仅对自身微服务模块在消息总线上订阅的消息类型的业务消息进行处理。当某一个微服务模块发生阻塞时,不会影响未订阅该微服务模块处理得到的业务消息的消息类型的其他微服务模块的业务消息处理,可以保证局部/部分业务处理成功,避免了整个业务处理失败,提高了微服务应用的容错性。并且,当微服务应用扩展微服务模块时,扩展的微服务模块也仅需从消息总线上订阅业务消息的消息类型,当消息总线上有扩展的微服务模块订阅的消息类型的业务消息时进行处理即可,无需修改其他所有微服务模块的业务逻辑,或者仅修改少数微服务模块的业务逻辑,提高了微服务应用的扩展性。
[0016] 当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。附图说明
[0017] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018] 图1为现有技术提供的微服务模块通信交互示意图;
[0019] 图2为本发明实施例提供的微服务模块所在的系统的结构示意图;
[0020] 图3为本发明实施例提供的一种业务消息处理方法的流程示意图;
[0021] 图4为本发明实施例提供的一种业务消息处理装置的结构示意图。

具体实施方式

[0022] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0023] 为了解决现有技术问题,本发明实施例提供了一种业务消息处理方法及装置。下面首先对本发明实施例所提供的一种业务消息处理方法进行介绍。
[0024] 需要说明的是,本发明实施例提供的一种业务消息处理方法及装置,优选适用于微服务模块,其中,微服务模块所在的系统还包括消息调度模块和消息总线。微服务模块所在的系统的结构如图2所示,图2为本发明实施例提供的微服务模块所在的系统的结构示意图。微服务模块所在的系统包括:消息调度模块201、多个微服务模块(例如,微服务模块1、微服务模块2、微服务模块3……微服务模块N)和消息总线202。
[0025] 图3为本发明实施例提供的一种业务消息处理方法的流程示意图;该方法可以包括:
[0026] S301:监听所述消息总线上发布的业务消息。
[0027] 其中,所述业务消息为客户端发送给所述消息调度模块,并由所述消息调度模块发布给所述消息总线的,或者为所述系统中的其他微服务模块发布给所述消息总线的。
[0028] 在实际应用中,监听所述消息总线上发布的业务消息,可以通过AMQP(Advanced Message Queuing Protocol,高级消息队列协议)监听所述消息总线上发布的业务消息。
[0029] S302:在所述业务消息的消息类型为所述微服务模块在所述消息总线上订阅的消息类型时,根据所述消息类型对所述业务消息进行处理。
[0030] 在实际应用中,根据所述消息类型对所述业务消息进行处理,可以在根据所述消息类型确定不需要其他微服务模块协同处理时,对所述业务消息进行处理,得到对应的结果类消息;在根据所述消息类型确定需要其他微服务模块协同处理时,确定需要协同处理的其他微服务模块;构建消息类型为确定的微服务模块订阅的消息类型的业务消息;对所述业务消息进行处理,得到对应的结果类消息;将构建的业务消息和所述结果类消息作为处理后得到的业务消息。
[0031] S303:将处理后得到的业务消息发布给所述消息总线,以使订阅所述处理后得到的业务消息的消息类型的其他微服务模块监听到所述处理后得到的业务消息时,处理所述处理后得到的业务消息,或者所述消息调度模块确定所述处理后得到的业务消息为结果类消息时推送给所述客户端。
[0032] 示例性的,假设图2所示的微服务模块所在的系统包括4个微服务模块,分别为微服务模块1、微服务模块2、微服务模块3和微服务模块4。其中,假设微服务模块1的业务需要微服务模块2和微服务模块3协助处理,微服务模块2和微服务模块3的业务又均需要微服务模块4协助处理,在这种情形下,微服务模块1、微服务模块2、微服务模块3和微服务模块4均可以向消息总线202订阅各模块处理的业务消息的消息类型。
[0033] 需要说明的是,微服务模块1处理完自己需要处理的业务消息后得到的业务消息中会有微服务模块2和微服务模块3需要处理的消息类型的业务消息,微服务模块2和微服务模块3处理完各自需要处理的业务消息后得到的业务消息中会有微服务模块4需要处理的消息类型的业务消息。
[0034] 下面以微服务模块1、微服务模块2、微服务模块3和微服务模块4为例,对上述业务消息处理流程进行详细说明。
[0035] 首先,消息调度模块201接收客户端发送的业务消息1,并将业务消息1发布到消息总线202上。业务消息1中携带有客户端标识和业务消息1对应的业务标识,以便消息调度模块201后续监听到消息总线202上存在有结果类消息时,依据客户端标识和业务标识,将结果类消息发送给相应的客户端。
[0036] 接下来,微服务模块1监听到消息总线202上发布有需要自己处理的业务消息1(业务消息1的消息类型是微服务模块1需要处理的),对业务消息1进行处理,得到结果类消息1.0、业务消息2(此消息是微服务模块1根据业务消息1的消息类型确定需要微服务模块2协同处理时构建的)和业务消息3(此消息是微服务模块1根据业务消息1的消息类型确定需要微服务模块3协同处理时构建的),并将结果类消息1.0、业务消息2和业务消息3发布到消息总线202上。
[0037] 之后,消息调度模块201监听到消息总线202上发布有结果类消息1.0,将结果类消息1.0发送给客户端。
[0038] 微服务模块2监听到消息总线202上发布有需要自己处理的业务消息2(业务消息2的消息类型是微服务模块2需要处理的),对业务消息2进行处理,得到结果类消息2.0和业务消息4(此消息是微服务模块2根据业务消息2的消息类型确定需要微服务模块4协同处理时构建的),并将结果类消息2.0和业务消息4发布到消息总线202上。
[0039] 微服务模块3监听到消息总线202上发布有需要自己处理的业务消息3(业务消息3的消息类型是微服务模块3需要处理的),对业务消息3进行处理,得到结果类消息3.0和业务消息5(此消息是微服务模块3根据业务消息3的消息类型确定需要微服务模块4协同处理时构建的),并将结果类消息3.0和业务消息5发布到消息总线202上。
[0040] 后续消息调度模块201会监听到消息总线202上发布有结果类消息2.0和结果类消息3.0,并将其发送给客户端。
[0041] 微服务模块4会监听到消息总线202上发布有需要自己处理的业务消息4和业务消息5(这两个业务消息的消息类型是微服务模块4需要处理的),对业务消息4和业务消息5进行处理,得到结果类消息4.0和结果类消息5.0,并将结果类消息4.0和结果类消息5.0发布到消息总线202上。
[0042] 最后,消息调度模块201监听到消息总线202上发布有结果类消息4.0和结果类消息5.0,并将其发送给客户端。
[0043] 应用本发明图3所示实施例,各个微服务模块仅对自身微服务模块在消息总线上订阅的消息类型的业务消息进行处理。当某一个微服务模块发生阻塞时,不会影响未订阅该微服务模块处理得到的业务消息的消息类型的其他微服务模块的业务消息处理,可以保证局部/部分业务处理成功,避免了整个业务处理失败,提高了微服务应用的容错性。并且,当微服务应用扩展微服务模块时,扩展的微服务模块也仅需从消息总线上订阅业务消息的消息类型,当消息总线上有扩展的微服务模块订阅的消息类型的业务消息时进行处理即可,无需修改其他所有微服务模块的业务逻辑,或者仅修改少数微服务模块的业务逻辑,提高了微服务应用的扩展性。
[0044] 与上述的方法实施相对应,本发明实施例还提供一种业务消息处理装置。
[0045] 图4为本发明实施例提供的一种业务消息处理装置的结构示意图,该装置可以包括:监听单元401、处理单元402和发布单元403,其中,
[0046] 监听单元401,用于监听所述消息总线上发布的业务消息,所述业务消息为客户端发送给所述消息调度模块,并由所述消息调度模块发布给所述消息总线的,或者为所述系统中的其他微服务模块发布给所述消息总线的;
[0047] 其中,本发明实施例提供的监听单元401,具体可以用于:
[0048] 通过高级消息队列协议监听所述消息总线上发布的业务消息。
[0049] 处理单元402,用于在所述业务消息的消息类型为所述微服务模块在所述消息总线上订阅的消息类型时,根据所述消息类型对所述业务消息进行处理;
[0050] 其中,本发明实施例提供的处理单元402,具体可以用于:
[0051] 在所述业务消息的消息类型为所述微服务模块在所述消息总线上订阅的消息类型时,在根据所述消息类型确定不需要其他微服务模块协同处理时,对所述业务消息进行处理,得到对应的结果类消息。
[0052] 其中,本发明实施例提供的处理单元402,具体还可以用于:
[0053] 在根据所述消息类型确定需要其他微服务模块协同处理时,确定需要协同处理的其他微服务模块;
[0054] 构建消息类型为确定的微服务模块订阅的消息类型的业务消息;
[0055] 对所述业务消息进行处理,得到对应的结果类消息;
[0056] 将构建的业务消息和所述结果类消息作为处理后得到的业务消息。
[0057] 发布单元403,用于将处理后得到的业务消息发布给所述消息总线,以使订阅所述处理后得到的业务消息的消息类型的其他微服务模块监听到所述处理后得到的业务消息时,处理所述处理后得到的业务消息,或者所述消息调度模块确定所述处理后得到的业务消息为结果类消息时推送给所述客户端。
[0058] 优选地,在本发明实施例中,监听单元监听到所述消息总线上需要微服务模块处理的业务消息时,也可以将该业务消息发布到微服务模块中的消息总线上,由相应的处理单元处理之后再通过微服务模块中的消息总线发布到所述消息总线上。
[0059] 应用本发明图4所示实施例,各个微服务模块仅对自身微服务模块在消息总线上订阅的消息类型的业务消息进行处理。当某一个微服务模块发生阻塞时,不会影响未订阅该微服务模块处理得到的业务消息的消息类型的其他微服务模块的业务消息处理,可以保证局部/部分业务处理成功,避免了整个业务处理失败,提高了微服务应用的容错性。并且,当微服务应用扩展微服务模块时,扩展的微服务模块也仅需从消息总线上订阅业务消息的消息类型,当消息总线上有扩展的微服务模块订阅的消息类型的业务消息时进行处理即可,无需修改其他所有微服务模块的业务逻辑,或者仅修改少数微服务模块的业务逻辑,提高了微服务应用的扩展性。
[0060] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0061] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
[0062] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈