一种多测试环境下的消息传递方法及装置与流程

文档序号:26278243发布日期:2021-08-13 19:34阅读:121来源:国知局
一种多测试环境下的消息传递方法及装置与流程

本申请涉及计算机技术领域,特别涉及一种多测试环境下的消息传递方法、装置、设备及介质。



背景技术:

一个系统中存在众多微服务,且一个系统的实现需要多个开发团队共同完成。当开发团队开发完一个微服务时,需要在测试环境中将新设计的微服务装入(即只对其中众多的微服务的其中部分进行了调整),并对开发完成的微服务进行测试以确认其是否能正常运转。同一时间只能有一个开发人员或测试人员测试。往往,测试环境的部署数量是有限的,在测试环境被某一开发人员占用后,其他的测试人员需要排队使用测试环境。这样导致大量的等待时间,造成时间的浪费,效率低下,而且如果操作不当,不同的测试项目之间的数据可能会存在互相干扰,进而影响测试结果。



技术实现要素:

本申请实施例提供了一种多测试环境下的消息传递方法、装置、设备及介质。

第一方面,本申请实施例提供了一种多测试环境下的消息传递方法,用于电子设备,其中,所述多测试环境包括第一测试环境和第二测试环境,在所述第一测试环境和所述第二测试环境中包括至少一个发送者和至少一个接收者,所述消息通过消息中间件在所述发送者和所述接收者之间转发,所述方法包括:

所述发送者发送所述消息,其中,所述消息包括用以指示所述发送者的第一标记;

所述消息中间件接收所述消息,并且根据所述第一标记从与所述消息中间件连接的所述接收者中确定作为消息目的地的接收者;

作为目的地的接收者经由所述消息中间件得到所述消息。

在上述第一方面的一种可能的实现中,所述消息是所述第一测试环境的第一发送者发送的第一消息,并且,所述第一消息被所述第一测试环境的第一接收者获取。

在上述第一方面的一种可能的实现中,所述消息是所述第二测试环境的第二发送者发送的第二消息,并且,所述第二消息基于所述消息中间件的控制,被所述第一测试环境中的所述第一接收者或所述第二测试环境中的第二接收者接收。

在上述第一方面的一种可能的实现中,所述第二测试环境的第二发送者发送所述第二消息,在所述消息中间件在所述第二测试环境中检测到作为消息目的地的第二接收者的情况下,所述第二消息被第二接收者获取。

在上述第一方面的一种可能的实现中,所述第二测试环境的第二发送者发送所述第二消息,在所述消息中间件未在所述第二测试环境中检测到作为消息目的地的第二接收者的情况下,所述第二消息被所述第一测试环境中的第三接收者获取。

在上述第一方面的一种可能的实现中,根据所述消息中的第一标记从与所述消息中间件连接的所述接收者中确定作为消息目的地的接收者,包括:所述消息中间件通过匹配所述接收者包括的第二标记与所述第一标记来确定作为消息目的地的接收者。

在上述第一方面的一种可能的实现中,所述消息中间件通过匹配所述接收者包括的第二标记与所述第一标记来确定作为消息目的地的接收者,包括:在所述接收者的第二标记与所述第一标记相同的情况下,所述消息中间件将所述接收者确定为所述作为消息目的地的接收者。

在上述第一方面的一种可能的实现中,所述消息中间件通过匹配所述接收者包括的第二标记与所述第一标记来确定作为消息目的地的接收者,包括:在所述第二标记与所述第一标记之间满足基于预设的转化规则的情况下,所述消息中间件将所述接收者确定为所述作为消息目的地的接收者。

在上述第一方面的一种可能的实现中,在确定消息的目的地之后,所述消息中间件将所述消息转发到所述作为消息目的地的接收者。

在上述第一方面的一种可能的实现中,在确定消息的目的地之后,所述作为目的地的接收者从所述消息中间件基于所述第二标记查询并获取所述消息。

在上述第一方面的一种可能的实现中,所述第一标记和所述第二标记被添加在所述消息的消息头中。

在上述第一方面的一种可能的实现中,所述第一标记和所述第二标记通过所述消息中间件修改交换器和消息队列名称进行标记。

在上述第一方面的一种可能的实现中,所述第二消息被所述第一测试环境中的第三接收者获取之后,所述消息中间件在所述第二测试环境中检测到作为消息目的地的第二接收者时,所述第二消息再次被所述第二接收者获取,并做幂等处理。

第二方面,本申请实施例提供了一种一种多测试环境下的消息传递方法,用于电子设备,其中,所述多测试环境包括第一测试环境和第二测试环境,在所述第一测试环境和所述第二测试环境中包括至少一个发送者和至少一个接收者,所述消息通过消息中间件在所述发送者和所述接收者之间转发,所述装置包括:

发送模块,所述发送者发送所述消息,其中,所述消息包括用以指示所述发送者的第一标记;

传递模块,所述消息中间件接收所述消息,并且根据所述第一标记从与所述消息中间件连接的所述接收者中确定作为消息目的地的接收者;

接收模块,作为目的地的接收者经由所述消息中间件得到所述消息。

在上述第二方面的一种可能的实现中,所述消息是所述第一测试环境的第一发送者发送的第一消息,并且,所述第一消息被所述第一测试环境的第一接收者获取。

在上述第二方面的一种可能的实现中,所述消息是所述第二测试环境的第二发送者发送的第二消息,并且,所述第二消息基于所述消息中间件的控制,被所述第一测试环境中的所述第一接收者或所述第二测试环境中的第二接收者接收。

在上述第二方面的一种可能的实现中,所述第二测试环境的第二发送者发送所述第二消息,在所述消息中间件在所述第二测试环境中检测到作为消息目的地的第二接收者的情况下,所述第二消息被第二接收者获取。

在上述第二方面的一种可能的实现中,所述第二测试环境的第二发送者发送所述第二消息,在所述消息中间件未在所述第二测试环境中检测到作为消息目的地的第二接收者的情况下,所述第二消息被所述第一测试环境中的第三接收者获取。

在上述第二方面的一种可能的实现中,根据所述消息中的第一标记从与所述消息中间件连接的所述接收者中确定作为消息目的地的接收者,包括:所述消息中间件通过匹配所述接收者包括的第二标记与所述第一标记来确定作为消息目的地的接收者。

在上述第二方面的一种可能的实现中,所述消息中间件通过匹配所述接收者包括的第二标记与所述第一标记来确定作为消息目的地的接收者,包括:在所述接收者的第二标记与所述第一标记相同的情况下,所述消息中间件将所述接收者确定为所述作为消息目的地的接收者。

在上述第二方面的一种可能的实现中,所述消息中间件通过匹配所述接收者包括的第二标记与所述第一标记来确定作为消息目的地的接收者,包括:在所述第二标记与所述第一标记之间满足基于预设的转化规则的情况下,所述消息中间件将所述接收者确定为所述作为消息目的地的接收者。

在上述第二方面的一种可能的实现中,在确定消息的目的地之后,所述消息中间件将所述消息转发到所述作为消息目的地的接收者。

在上述第二方面的一种可能的实现中,在确定消息的目的地之后,所述作为目的地的接收者从所述消息中间件基于所述第二标记查询并获取所述消息。

在上述第二方面的一种可能的实现中,所述第一标记和所述第二标记被添加在所述消息的消息头中。

在上述第二方面的一种可能的实现中,所述第一标记和所述第二标记通过所述消息中间件修改交换器和消息队列名称进行标记。

在上述第二方面的一种可能的实现中,所述第二消息被所述第一测试环境中的第三接收者获取之后,所述消息中间件在所述第二测试环境中检测到作为消息目的地的第二接收者时,所述第二消息再次被所述第二接收者获取,并做幂等处理。

第三方面,本申请实施例提供了一种多测试环境下的消息传递设备,所述多测试环境下的消息传递设备包括:

存储器,用于存储由系统的一个或多个处理器执行的指令,以及

处理器,是系统的处理器之一,用于执行所述指令以实施上述第一方面的任意一种可能的方法。

第四方面,本申请实施例提供了一种计算机可读介质,计算机可读介质上存储有指令,该指令在计算机上执行时可以使计算机执行上述第一方面的任意一种可能的方法。

本申请与现有技术相比,其效果在于:

现有技术中,所有的异步测试只能有一个开发人员或测试人员在做,极大的影响工作效率。而本申请所公开的多测试环境下的消息传递方法,使得每个开发人员或测试人员都可以在自己的测试环境上实现多服务的同时测试,极大的提高了测试的效率,切实满足开发人员和测试人员的需求,与此同时,该方法只在测试环境中生效,对线上环境无任何影响,风险可控,且对使用者透明,无需修改任何业务代码,只需升级中间件版本即可启用,方便快捷高效,且与分布式远程调用框架具有良好的集成。

附图说明

图1根据本申请的一些实施例,示出了一种多测试环境下的消息传递方法的应用场景图;

图2根据本申请的一些实施例,示出了一种多测试环境下的消息传递方法的硬件结构框图;

图3根据本申请的一些实施例,示出了一种多测试环境下的消息传递方法的示意图;

图4根据本申请的一些实施例,示出了一种多测试环境下的消息传递方法的流程图;

图5根据本申请的一些实施例,示出了三种不同的测试过程中消息传递方法的情形;

图6根据本申请的一些实施例,示出了一种在消息中间件rabbitmq中进行标记的示意图;

图7根据本申请的一些实施例,示出了一种多测试环境下的消息传递装置的结构示意图。

具体实施方式

本申请的说明性实施例包括但不限于一种多测试环境下的消息传递方法、装置、设备以及介质。

可以理解,本申请提供的多测试环境下的消息传递方法可以在各种电子设备上实施,包括但不限于,服务器、多个服务器组成的分布式服务器集群、手机、平板电脑、膝上型计算机、台式计算机、可穿戴设备、头戴式显示器、移动电子邮件设备、便携式游戏机、便携式音乐播放器、阅读器设备、个人数字助理、虚拟现实或者增强现实设备、其中嵌入或耦接有一个或多个处理器的电视机等电子设备等。

可以理解,在本申请各实施例中,处理器可以是微处理器、数字信号处理器、微控制器等,和/或其任何组合。根据另一个方面,所述处理器可以是单核处理器,多核处理器等,和/或其任何组合。

下面将结合附图对本申请的实施例作进一步地详细描述。

图1根据本申请的一些实施例,示出了一种多测试环境下的消息传递的场景图。具体的,如图1所示,该多测试环境下的消息传递方法应用于多测试环境下的消息传递系统。该多测试环境下的消息传递系统包括终端110、服务器120、终端130。终端110、服务器120和终端130之间通过网络连接,网络连接可以包括各种连接类型,例如有线、无线通信链路、云或者光纤电缆等等,上述的网络具体实例可包括终端110和终端130的通信供应商提供的互联网。终端110和终端130之间也可采用其他方式连接,比如通过数据线连接,以使接收的音频可以传输到终端110上。

终端110和终端130可以是安装有端到端的多测试环境下的消息传递软件的设备,具体可以是台式终端或移动终端,移动终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。

服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

首先,在终端110和终端130上均部署了测试环境。开发人员或测试人员等用户可基于多测试环境下的消息传递方法在终端110和/或终端130上对多个服务同时进行测试,通过异步消息传递使得各个测试之间相互隔离,保持数据的稳定性。终端110和/或终端130将测试需求信息发送至服务器120。服务器120根据测试资源需求信息调用并配置测试环境需要的物理资源。

作为示例,此处仅示出2个终端,但是本申请不限于此,可以在一台终端设备上搭建多个测试环境,亦可在多个终端上搭建多个测试环境。

下面根据本申请的一些实施例,详细说明应用于图1所示的场景的多测试环境下的消息传递技术方案。多测试环境包括公共测试环境(作为第一测试环境的实例)和个人测试环境(作为第二测试环境的实例),其中测试环境可部署在终端110和/或终端130上,服务器120根据终端110和/或终端130上的测试需求调用并配置测试环境需要的物理资源。在第一测试环境和第二测试环境中包括至少一个发送者和至少一个接收者,消息通过消息中间件在发送者和接收者之间转发。首先,发送者发送包括用以指示该发送者的第一标记的消息,接下来,消息中间件接收该消息,并根据消息中的第一标记从与其连接的接收者中确定作为消息目的地的接收者,然后,作为目的地的接收者经由消息中间件得到该消息,完成多测试环境下的消息传递。本申请中的技术方案,通过在消息上添加标记的形式,使得接收者能够接收到同一测试环境中的发送者发送的测试消息,从而实现了消息队列的异步环境下的不同的测试环境之间服务调用的隔离,使得各个测试之间可以同步的互不干扰的进行。

本申请方式所提供的方法实施方式可以在终端110和/或终端130中执行,图2根据本申请的一些实施例,示出了一种多测试环境下的消息传递方法的硬件结构框图。如图2所示,终端110(同样适用于终端130)可以包括一个或多个(图中仅示出一个)处理器111(处理器111可以包括但不限于中央处理器cpu、图像处理器gpu、数字信号处理器dsp、微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于与用户交互的输入输出接口112、用于存储数据的存储器113、以及用于通信功能的传输装置114。本领域技术人员可以理解,图2所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,终端110还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。

处理器111通过运行存储在存储器113内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的多测试环境下的消息传递方法。

输入输出接口112可以连接一个或多个显示器、触控屏等,用于显示从终端110传送的数据,还可以连接键盘、触控笔、触控板和/或鼠标等,用于输入诸如,选择、创建、编辑等的用户指令。

存储器113可用于存储数据库、队列、应用软件的软件程序以及模块,如本申请的一些实施例中的多测试环境下的消息传递方法对应的程序指令/模块。存储器113可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器113可进一步包括相对于处理器111远程设置的存储器,这些远程存储器可以通过网络连接至终端110。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置114用于经由网络接收由服务器120传输的数据到服务器120,网络可以包括各种连接类型,例如有线、无线通信链路、云或者光纤电缆等等。上述的网络具体实例可包括终端110的通信供应商提供的互联网。

在一些实施例中,公共环境(该公共环境为第一测试环境的一个实例)只有一个,公共环境上的服务是相对稳定的版本,且应包括所有需要的服务;个人环境(该个人环境为第二测试环境的一个实例)可以有多个,对不同的服务进行测试的时候,均可建立一个个人环境,每个开发人员均可以有自己的个人环境,而自己的个人环境一般只包括自己负责的服务。对于开发人员来说,如果只是需要测试发送者,则仅仅在测试环境中部署发送者即可,如果需要测试接收者,则需要在测试环境中同时部署发送者和接收者。

根据本申请的一个实施例,公共环境和个人环境均连接到rocketmq(该rocketmq为消息中间件的一个实例)上进行通信,在rocketmq进行消息传递的过程中,涉及五个角色,分别是发送者(producer),接收者(consumer),消息服务器(broker),主题(topic)和队列(queue)。其中,发送者用于生产并发送消息,将针对同一服务生产并发送相同的消息的发送者合在一起得到发送者组(producergroup);接收者用于通过rocketmq得到发送者发送的相同的消息,支持以推、拉两种方式对消息进行接收,将接收到发优惠券的消息的接收者合在一起得到接收者组(consumergroup);消息服务器主要负责消息的存储、投递和查询以及服务高可用保证;主题是逻辑概念,由多个队列组成,代表一类消息,比如订单服务中的发优惠券消息,物流消息、付款消息等;队列是是主题在一个消息服务器上的分片等分为指定份数后的其中一份,是负载均衡过程中资源分配的基本单元。一个主题由多个队列组成,并且多个队列平均分布在多个消息服务器上,一个消息服务器上也可以配置多个主题。在一些实施例中,当开发人员需要对订单服务中的子服务之一的发优惠券服务进行测试时,发送者生产并发送发优惠券的消息到消息服务器上的同一主题中,接收者从消息服务器的同一主题中拉取发优惠券的消息并消费。

图3示出了一种多测试环境下的消息传递的示意图。如图3所示,多测试环境包括公共环境和个人环境,其中,公共环境中有发送者1,以及接收者1和接收者2,个人环境中有发送者2、发送者3和接收者3。假设所有的发送者和接收者均连接到rocketmq的同一个主题上,且同一主题可存储到不同的消息服务器的不同队列中。

发送者1发送带有标记1的消息1到消息中间件的topic上;rocketmq接收消息1,当rocketmq通过消息1中的标记1找到可作为目的地接收者的接收者1时;接收者1接收发送者1发出的消息1。

发送者2发送带有标记2的消息2到主题上,当rocketmq没有从接收者中找到与之对应的接收者,此时rocketmq将该消息2转发到公共环境的接收者中,由公共环境中的接收者1和接收者2接收。

发送者3发送带有标记3的消息3到主题上,当rocketmq在个人环境中找到了可作为目的地接收者的接收者3,接收者3接收发送者3发出的消息3。

通过本申请中的消息传递方式,使得个人环境上发送的消息能够被相同个人环境的接收者收到,同时业务代码无需进行更改,完成了基于异步消息传递的情况下,不同测试环境之间的服务调用隔离。

图4根据本申请的一些实施例,示出了一种多测试环境下的消息传递方法的流程图。

如图4所示,在某些实施例中,该方法可以包括:

步骤401:发送者发送带有第一标记的消息。

具体的,在步骤401中,在一些实施例中,第一标记或第二标记使用消息的消息头加泳道标记的方式来实现,例如,在消息的消息头中以key_value的模式加上一个环境变量,其中key是固定的,为env,该env是一个外部命令,可通过程序文件/bin/env列出所有环境变量及其赋值。value可在不超过20个字节的范围内自定义,例如fayouhuiquan,表示创建该测试环境是用来测试订单服务中的发优惠券子服务,为了便于查看以子服务的拼音全拼定义,用户也可根据自己的喜好自定义。在一些实施例中,当开发人员需要对订单服务中的子服务之一的发优惠券服务进行测试时,发送者发送带有标记为fayouhuiquan消息头的消息到消息中间件的主题中。

步骤402:消息中间件接收该消息,并根据第一标记确定作为目的地的接收者。

具体的,在步骤402中,rocketmq接收该发优惠券消息,并根据接收者的第二标记与该fayouhuiquan标记是否匹配来从与rocketmq连接的接收者中确定作为消息目的地的接收者。进一步的,当符合以下任一情况时,认为第二标记与第一标记匹配:当接收者的第二标记与第一标记相同时,即第二标记也为fayouhuiquan的环境变量;当第二标记与第一标记之间满足基于预设的转化规则时,比如,当发送者发送带有第一标记为fayouhuquan的消息,接收者的第二标记是fayouhuiquan-1,即当满足第二标记为第一标记再加上后缀例如“-1”这种预设的转化规则时,认为第二标记与第一标记匹配。又如,正则匹配,具体为使用正则定义的第二标记与第一标记可进行转化时,认定二者匹配。以上仅仅是进行示例性说明,任何满足预设的转化规则的方式都可以作为第二标记与第一标记匹配的条件。

步骤403:作为目的地的接收者经由消息中间件得到该消息。

具体的,在步骤403中,在一些实施例中,rocketmq确定了作为消息目的地的接收者之后,将具有fayouhuiquan标记的消息转发到作为消息目的地的接收者,即接收者被推送得到具有fayouhuiquan标记的消息。在一些实施例中,接收者可以以从rocketmq查询标记fayouhuiquan是否与其具有的第二标记匹配的方式,确定与之匹配的消息,然后从rocketmq中获取具有fayouhuiquan标记的消息,即接收者主动拉取得到具有fayouhuiquan标记的消息。

现有技术中,如果不对消息进行标记,则发优惠券服务产生的消息会发送给订单服务中的所有子服务的接收者,包括下单服务,短信服务,发优惠券服务,支付服务等接收者,不仅使得整个系统繁杂紊乱,降低了服务的效率,更严重的会导致死机,一旦服务上线后,还会使得用户无法及时得到反馈,严重降低了用户体验。通过本申请中的技术方案,实现了在多测试环境下的消息传递,从而能够完成子服务的互不干扰的隔离测试,大大提高了测试的效率。当测试稳定之后再将其更新到公共环境中,进行接下来的审批上线流程。

在对子服务测试的过程中,会出现多种情况,以下,结合图5对测试过程中出现的不同消息传递情况进行具体阐述。

图5根据本申请的一些实施例,示出了三种不同的测试过程中消息传递的情形。图5a示出了仅在个人环境中存在接收者的情况。如图5a所示,对于订单服务的子服务发优惠券服务而言,开发人员开发出了在订单完成后给用户发优惠券的新功能,此时,在原有的订单服务中没有发优惠券的功能,对应到多测试环境中,即为公共环境中没有与发优惠券服务对应的接收者,因而仅在开发人员的个人环境中存在能够接收发优惠券消息的接收者。此时,开发人员在个人环境建立时便会新建与该发优惠券活动相对应的接收者。

当发送者发送带有fayouhuiquan标记的消息时,作为消息中间件的rocketmq接收该消息,并查询与其相连接的接收者,发现与该发送者在同一个人环境中的接收者的第二标记为fayouhuiquan-1,确定与该fayouhuiquan标记匹配,因而确定该接收者为作为目的地的接收者。接下来,作为目的地的接收者获取带有fayouhuiquan标记的消息,完成一次消息的传递,进而完成测试。当该服务稳定并获得批准之后,可将其稳定到公共环境中,成为线上的订单服务的发优惠券子服务投入使用。

图5b示出了仅在公共环境中存在接收者的情况。如图5b所示,对于订单服务的子服务发优惠券服务而言,公共环境中已存在在订单完成后给客户发放满200减10的优惠券的稳定的测试环境。但由于例如618,双11等活动的需求,开发人员需要在订单完成后给用户发放满200减15的优惠券,即仅对发放优惠券的具体金额作出了改动,而种类不变。此时,原有的订单服务中已有发优惠券的功能,且已有发优惠券的功能经过参数的调整便满足新的需求。

对应到多测试环境中,即为公共环境中现有的与发优惠券服务对应的接收者便可实现新的发优惠券服务。因而开发人员在个人环境建立时便会将公共环境中现有的与发优惠券服务对应的接收者与发送者相对应,当发送者发送带有fayouhuiquan200-15标记的消息时,rocketmq接收该消息,并查询与其相连接的接收者,发现公共环境中现有的与发优惠券服务对应的接收者的第二标记为fayouhuiquan-1,与该fayouhuiquan200-15标记匹配,因而该接收者为作为目的地的接收者获取到了带有fayouhuiquan200-15标记的消息,而无需新建新的接收者即完成了消息的传递,进而完成测试。

图5c示出了接收者存在于公共环境和个人环境两者中的情况。如图5c所示,对于订单服务的子服务发优惠券服务而言,公共环境中已存在在订单完成后给客户发放满200减10的优惠券。但由于例如618,双11等活动的需求,开发人员需要在订单完成后给用户发放满三件打七折的优惠券,即对发放优惠券的种类作出了改动。此时,原有的订单服务中已有发优惠券的功能只能进行满减,无法满足满三件打七折的新的种类的发优惠券方式。对应到多测试环境中,即为公共环境中现有的与发优惠券服务对应的接收者无法实现新的发优惠券服务。此时,开发人员在个人环境建立时需要新建与该发优惠券活动相对应的接收者,当发送者发送带有fayouhuiquan3-7标记的消息时,rocketmq接收该消息,并查询与其相连接的接收者,发现与该发送者在同一个人环境中的接收者的第二标记为fayouhuiquan3-7,与该fayouhuiquan3-7标记匹配,因而该接收者为作为目的地的接收者获取到了带有fayouhuiquan3-7标记的消息,完成一次消息的传递,进而完成测试。并当该服务稳定并获得批准之后,可将其添加到公共环境中的发优惠券子服务中,并更新线上的订单服务的发优惠券子服务投入使用。

在一些实施例中,消息中间件rocketmq优先检测与发送者处于同一个人环境中是否有与之匹配的接收者,如果有,则优先将消息传递给该接收者,如果没有,则将该消息传递到公共环境的接收者中。并且,当已经传递到公共环境的接收者之后,而又检测到与发送者处于同一个人环境中有与之匹配的接收者,则再次将该消息传递到与发送者处于同一个人环境中有与之匹配的接收者,此时,根据配置该接收者可能会接收到公共环境中已经被接收的消息,因此需要业务方做幂等处理。

在一些实施例中,第一标记和第二标记通过消息中间件修改交换器和消息队列名称进行标记。

图6根据本申请的一些实施例,示出了一种在消息中间件rabbitmq中进行标记的示意图。现有技术中,个人环境和公共环境中的发送者会将消息发送到不同的队列中,从而将消息隔离开。具体的,对于订单服务的子服务发优惠券服务而言,当开发人员更新了在订单完成后给用户发优惠券的功能,此时,在原有的订单服务中有发优惠券的功能,对应到多测试环境中,即个人环境上有发送者和接收者时,个人环境中的发送者jiaxu_producer默认会把消息发送到交换器(图6中为personal_jiaxu_exch)上,个人环境上的接收者jiaxu_consumer则会默认监听队列personal_jiaxu_queue中个人环境上发送的消息;当开发人员开发出了在订单完成后给用户发优惠券的新功能,此时,在原有的订单服务中没有发优惠券的功能,对应到多测试环境中,即个人环境上只有发送者,而没有接收者时,个人环境中的发送者jiaxu_producer默认会把消息发送到交换器(exchange,图6中简写为exch)上,并通过备份交换器(alternateexchange,图6中为personal_jiaxu_exch1)将该消息转发到另一个消息队列queue1中,最终被接收者consumer1接收。即在个人环境上没有任何接收者的时候,消息会被路由到公共环境,此时作消息中间件的rabbitmq仅做一个过渡中转的功能,消息不是在接收者端过滤,而在rabbitmq中直接过滤,提高了整个消息传递过程中的效率以及增强了系统的吞吐量。因而,当对交换器和消息队列的名称进行标记时,便可实现个人环境上的消息传递。更进一步的,对于fanout类型的消息,如果有3个接收者,而在个人环境上只建立了一个接收者(其他两个接收者在公共环境上),那么消息只会被个人环境上这一个接收者消费。这种情况下会在个人环境上启动与fanout所有相关的接收者。

在一些实施例中,消息中间件可以是但不限于romq、rabbitmq、activemq、kafka。

现有技术中,所有的异步测试只能有一个开发人员或测试人员在做,极大的影响工作效率。而本申请所公开的多测试环境下的消息传递方法,使得每个开发人员或测试人员都可以在自己的测试环境上实现多服务的同时测试,极大的提高了测试的效率,切实满足开发人员和测试人员的需求,与此同时,该方法只在测试环境中生效,对线上环境无任何影响,风险可控,且对使用者透明,无需修改任何业务代码,只需升级中间件版本即可启用,方便快捷高效,且与分布式远程调用框架具有良好的集成。

根据本申请的一些实施例,提供了一种多测试环境下的消息传递装置700,图7根据本申请的一些实施例,示出了一种多测试环境下的消息传递装置的结构示意图。如图7所示,多测试环境下的消息传递装置700如下:

发送模块701,发送者发送带有第一标记的消息。

传递模块702,消息中间件接收该消息,并根据第一标记确定作为目的地的接收者。

接收模块703,作为目的地的接收者经由消息中间件得到该消息。

第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。

本申请的第三实施方式涉及一种多测试环境下的消息传递设备,包括:

存储器,用于存储由系统的一个或多个处理器执行的指令,以及

处理器,是系统的处理器之一,用于执行所述指令以实施上述第一方面的任意一种可能的方法。

第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。

本申请的第四实施方式涉及一种使用计算机程序编码的计算机存储介质,计算机可读介质上存储有指令,该指令在计算机上执行时可以使计算机执行上述第一方面的任意一种可能的方法。

第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。

需要说明的是,本申请的各方法实施方式均可以以软件、硬件、固件等方式实现。不管本申请是以软件、硬件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(programmablearraylogic,简称“pal”)、随机存取存储器(randomaccessmemory,简称“ram”)、可编程只读存储器(programmablereadonlymemory,简称“prom”)、只读存储器(read-onlymemory,简称“rom”)、电可擦除可编程只读存储器(electricallyerasableprogrammablerom,简称“eeprom”)、磁盘、光盘、数字通用光盘(digitalversatiledisc,简称“dvd”)等等。

需要说明的是,本申请各设备实施方式中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部位,还可以以多个物理单元的组合实现,这些逻辑单元本身的物理实现方式并不是最重要的,这些逻辑单元所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部位,本申请上述各设备实施方式并没有将与解决本申请所提出的技术问题关系不太密切的单元引入,这并不表明上述设备实施方式并不存在其它的单元。

需要说明的是,在本专利的权利要求和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

虽然通过参照本申请的某些优选实施方式,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1