一种通过消息代理队列进行多环境消息对接的系统和方法技术方案

技术编号:38331123 阅读:23 留言:0更新日期:2023-07-29 09:13
本申请涉及创建消息队列代理的方法,消息队列代理在第一服务的多个运行环境和第二服务的一个或多个运行环境之间实现消息对接,方法包括:获得透传参数、环境/系统编码以及消息队列地址和名称以实现生产者配置;基于生产者配置生成与运行环境一一对应的环境交换机用于从生产者消息队列读取消息;使用透传参数、环境/系统编码以及消息队列地址和名称实现消费者配置;基于消费者配置生成与运行环境一一对应的环境消息队列用于向对应的服务的运行环境提供消息;以及配置环境交换机中的消息和环境消息队列之间的消息对接映射关系。另外,本申请还涉及消息队列代理装置、一种消息队列代理系统以及相应的非暂时性计算机可读存储介质。介质。介质。

【技术实现步骤摘要】
一种通过消息代理队列进行多环境消息对接的系统和方法


[0001]本申请涉及软件或进程的多环境消息管理领域,尤其涉及一种通过消息代理队列进行多环境消息对接的系统和方法。

技术介绍

[0002]消息队列是一种异步的服务间通信方式。消息在被处理和删除之前一直存储在队列上。图1中示出了采用AMQP协议的服务A和服务B之间一对一的消息对接框图。如图1中所示,服务A 101需要发送消息到服务B 102并接收从服务B 102返回的消息。在这种情况下,服务A 101发出消息,该消息中包括RoutingKey路由密钥,用于标识要将该消息传输到哪个Exchange 交换机103中哪个BindingKey绑定秘钥下的Queue消息队列105,而服务B 102接收消息队列的消息后,又以同样的流程经由Exchange 交换机104和Queue消息队列106进行消息返回。具体来说,BindingKey绑定密钥是Exchange交换机和Queue队列绑定的规则描述,这个规则描述用来解析当Exchange接收到所述消息时,根据消息中所包括的RoutingKey和当前Exchange交换机所有绑定的BindingKey做匹配,如果匹配成功,就把所述消息分配到BindingKey所绑定的Queue队列。
[0003]然而,目前,各公司在软件项目开发过程中经常涉及到多需求并行的情况。例如,对于一个支付系统,可能同时需要进行卡号验证、姓名验证和开户行验证。为了防止并行的各个需求之间相互冲突,需要进行需求隔离。因此,在开发过程中,将上述并行的多个需求部署在不同运行环境(例如开发环境、测试环境、灰度环境、或生产环境)中。例如将卡号验证部署在开发环境中、将姓名验证部署在测试环境中等等。由于同一公司内不同软件项目之间的技术栈不同,项目之间的服务器资源及上面所述的对需求的运行环境的要求也不同,因此往往不同项目会部署不同数量的运行环境。这就导致不同系统在消息对接时需要考虑多个运行环境的一对多或者多对多的情况。
[0004]图2示出了采用AMQP协议的服务A和服务B之间一对多的消息对接框图。在该示例中,服务A包括两个运行环境,即服务A第一环境201和服务A第二环境202,用于实现不同的需求。第一环境201和第二环境202分别发送消息1和消息2到服务B 208。当服务B 208接收到消息1和2并进行解析处理后,经由Exchange 交换机209和Queue消息队列210进行消息返回。然而,由于服务B仅有一个消息队列210,即Queue3消息队列,服务A的第一和第二环境无法知道Queue3消息队列中的哪个消息是自己需要接收的。
[0005]图2中仅示出了服务B只包括一个运行环境的示例。在实际的软件开发中,服务B也可能包括多个运行环境,比如第三环境和第四环境。这种情况下,服务A与服务B之间的消息对接就成为了服务A的第一环境或第二环境与服务B的第三环境或第四环境之间的相互消息对接。而且服务A的第一环境或第二环境与服务B的第三环境或第四环境之间的消息对接关系并不是固定的,经常会基于不同系统间的消息对接的要求进行修改,例如,由第一环境与第三环境对接变成第一环境与第四环境对接,或者同时与第三和第四环境对接等等。因此,如何在尽量减少开发者对此类运行环境对接的理解成本和修改成本的情况下进行灵活
的运行环境对接切换就成了一个挑战。

技术实现思路

[0006]本申请要解决的问题是,消除现有技术的上述缺点,帮助在不同服务间实现多对多运行环境的消息对接问题,还能让开发者的开发量及修改量与1对1环境消息对接情况下的开发量及修改量保持一致。
[0007]为解决上述问题,根据本申请的一方面,本申请中的实施例设计了一种创建消息队列代理的方法,所述消息队列代理能够在第一服务的多个运行环境和第二服务的一个或多个运行环境之间实现消息对接,其中产生消息的运行环境称为生产者,接收消息的运行环境称为消费者,所述方法包括:获得透传参数、环境/系统编码以及消息队列地址和名称以实现生产者配置,其中所述透传参数包括消息分发数据集,通过对所述透传参数进行解析能够确定消息要去往哪个服务的哪个环境,所述环境/系统编码标识产生所述消息的服务和运行环境,并且所述消息队列地址和名称标识所述消息要到达的消息队列;基于所述生产者配置生成与运行环境一一对应的环境交换机用于从生产者消息队列读取消息;使用所述透传参数、所述环境/系统编码以及所述消息队列地址和名称实现消费者配置;基于所述消费者配置生成与运行环境一一对应的环境消息队列用于向对应的服务的运行环境提供消息;以及配置所述环境交换机中的消息和所述环境消息队列之间的消息对接映射关系,所述消息映射关系中包括基于透射参数的判定。
[0008]根据本申请的另一方面,本申请中的实施例还设计了一种消息队列代理装置,所述消息队列代理装置被配置为在第一服务的多个运行环境和第二服务的一个或多个运行环境之间实现消息对接,其中产生消息的运行环境称为生产者,接收消息的运行环境称为消费者,所述装置包括:生产者环境交换机,基于透传参数、环境/系统编码以及消息队列地址和名称而生成为与运行环境一一对应并且被配置为从对应的生产者消息队列读取消息,其中所述透传参数包括消息分发数据集,通过对所述透传参数进行解析能够确定消息要去往哪个服务的哪个环境,所述环境/系统编码标识产生所述消息的服务和运行环境,并且所述消息队列地址和名称标识所述消息要到达的消息队列;消费者环境队列,基于透传参数、环境/系统编码以及消息队列地址和名称而生成为与运行环境一一对应且被配置为向对应的服务的运行环境提供消息;以及生产消费关系映射模块,配置所述环境交换机中的消息和所述环境消息队列之间的消息对接映射关系,所述消息映射关系中包括基于透射参数的判定。
[0009]其中所述运行环境选自开发环境、测试环境、灰度环境和生产环境。
[0010]其中所述环境交换机根据所述透传参数并基于所述消息对接映射关系而将对应的消息分配到对应的环境消息队列。
[0011]其中所述透传参数可以为空。
[0012]根据本申请的第三方面,本申请还涉及一种消息队列代理系统,包括:第一服务,至少包括第一运行环境和第二运行环境;第二服务,至少包括第三运行环境;以及根据上面实施例中所述的消息队列代理装置,用于实现第一、第二和第三环境之间的消息对接。
[0013]本申请还涉及一种非暂时性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在由一个或多个处理器执行时使得所述处理器实施上面提到的方法。
附图说明
[0014]附图示出了本公开的各方面的各种示例,并且它们与说明书一起用于解释本申请的原理。本
内的技术人员明白,附图所示的特定实施例仅是示例性的,并且它们无意限制本申请的范围。应该认识到,在某些示例中的一个元件也可以被设计为多个元件,或者多个元件也可以被设计为一个元件。在某些示例中,被示出为另一个元件的内部部件的元件也可以被实现为该另一个元件的外部部件,反之亦然。
[0015]图1本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种创建消息队列代理的方法,所述消息队列代理能够在第一服务的多个运行环境和第二服务的一个或多个运行环境之间实现消息对接,其中产生消息的运行环境称为生产者,接收消息的运行环境称为消费者,所述方法包括:获得透传参数、环境/系统编码以及消息队列地址和名称以实现生产者配置,其中所述透传参数包括消息分发数据集,通过对所述透传参数进行解析能够确定消息要去往哪个服务的哪个环境,所述环境/系统编码标识产生所述消息的服务和运行环境,并且所述消息队列地址和名称标识所述消息要到达的消息队列;基于所述生产者配置生成与运行环境一一对应的环境交换机用于从生产者消息队列读取消息;使用所述透传参数、所述环境/系统编码以及所述消息队列地址和名称实现消费者配置;基于所述消费者配置生成与运行环境一一对应的环境消息队列用于向对应的服务的运行环境提供消息;以及配置所述环境交换机中的消息和所述环境消息队列之间的消息对接映射关系,所述消息映射关系中包括基于透射参数的判定。2.根据权利要求1所述的方法,其中所述运行环境选自开发环境、测试环境、灰度环境和生产环境。3.根据权利要求1或2所述的方法,还包括所述环境交换机根据所述透传参数并基于所述消息对接映射关系而将对应的消息分配到对应的环境消息队列。4.根据权利要求1或2所述的方法,其中所述透传参数可以为空。5.一种消息队列代理装置,所述消息队列代理装置被配置为在第一服务的多个运行环境和第二服务的一个或多个运行环境之间实现消息对接,其中产生消息的运行环境称为生产者,接收消息的运行环境称为消费者,所述装置包括:生产者环境交换机,基于透传参数、环...

【专利技术属性】
技术研发人员:孙阔
申请(专利权)人:大家养老保险股份有限公司
类型:发明
国别省市:

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

1