CN111464384A - 一种异步消息的一致性测试方法及装置 - Google Patents
一种异步消息的一致性测试方法及装置 Download PDFInfo
- Publication number
- CN111464384A CN111464384A CN202010235348.4A CN202010235348A CN111464384A CN 111464384 A CN111464384 A CN 111464384A CN 202010235348 A CN202010235348 A CN 202010235348A CN 111464384 A CN111464384 A CN 111464384A
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- simulation
- messages
- sending
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种异步消息的一致性测试方法及装置,包括:对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,其中,模拟队列是在消息中间件中预先创建的;根据消息消费者反馈的消息接收记录和消息生产者中的日志记录生成消息一致性测试结果。本申请通过引入模拟队列和异常模拟模块,可以对单个队列出现的正常场景、消息丢失、消息延时、消息重发等情况进行模拟,避免删队列、宕服务器、切断网络等操作引起的大范围影响,而且,通过异常模拟模块的配置化设置,可以灵活设计并可定制化实现各种复杂的异常场景。
Description
技术领域
本申请属于信息处理技术领域,具体地讲,涉及一种异步消息的一致性测试方法及装置。
背景技术
目前金融领域的异步消息系统的主要架构如图1所示,由系统A、消息中间件B和系统C构成。系统A和系统C通过消息中间件B传递消息。与系统A发出消息后受到阻塞而等待返回的同步方式情况不同,异步消息系统的消息中间件B立刻返回成功响应给系统A,不需要等待消息的后续处理。
异步消息系统在金融业内有着广泛的应用,这种异步处理方式可以实现各系统间的解耦,解决了同步方式下因不同系统的性能差异而导致的“木桶效应”,能够有效减少资源占用的等待时间。但是对于金融领域的异步系统而言,若消息传递过程中出现故障(如消息丢失、消息超时、重传等)会造成业务数据的不一致。金融业务不同于其他行业,涉及到账务的业务数据不一致可能会导致错账,会给客户造成不同程度的经济损失,极大程度上降低了用户的体验。因此,金融领域的异步消息系统对消息的一致性要求极高,针对异步消息系统设计消息的一致性测试方法,保证异步消息系统在正常和异常情况下业务的一致性显得尤为重要。然而目前,异步消息系统的测试对消息一致性关注较少,通常的一致性测试方法主要是针对联机服务同步交易进行异常模拟来验证系统的一致性机制,这种方法用于异步消息系统会导致一致性测试不准确。
发明内容
本申请提出了一种异步消息的一致性测试方法及装置,以至少解决现有技术中在对异步消息系统进行测试时对消息的一致性关注较少而导致消息不同步的问题。
根据本申请的一个方面提供了一种异步消息的一致性测试方法,包括:
对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,其中,模拟队列是在消息中间件中预先创建的;
根据消息消费者反馈的消息接收记录和消息生产者中的日志记录生成消息一致性测试结果。
在一实施例中,模拟操作包括:正常操作;对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,包括:
将模拟队列中的消息发送至消息中间件中的第一目标队列;
从第一目标队列中获取消息,并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一实施例中,模拟操作包括:消息丢失操作;对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,包括:
抹除模拟队列中的消息后将模拟队列中的所有剩余消息转发至消息中间件中的第一目标队列;
从第一目标队列中获取消息,并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一实施例中,模拟操作包括:消息超时操作;对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,包括:
将模拟队列中的消息取出并间隔一段预设的时间后发送至消息中间件中的第一目标队列;
从第一目标队列中获取消息,并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一实施例中,模拟操作包括:消息重发操作;对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,包括:
将模拟队列中的消息取出并复制一份相同内容的消息后将原消息及复制的消息均发送至消息中间件中的第一目标队列;
从第一目标队列中获取消息,并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一实施例中,异步消息的一致性测试方法还包括:
对消息生产者中的所有消息进行编号并将编号、消息发送时间和消息发送数量记录在日志记录中。
在一实施例中,消息接收记录包括:消息编号、接收到的消息数量,根据消息消费者反馈的消息接收记录和消息生产者中的日志记录生成消息一致性测试结果,包括:
根据消息编号对比消息接收记录中接收到的消息数量与日志记录中的消息发送数量是否一致;
在一实施例中,消息接收记录包括:消息编号、消息接收时间,根据消息消费者反馈的消息接收记录和消息生产者中的日志记录生成消息一致性测试结果,包括:
根据消息编号对比消息接收记录中的消息接收时间和日志记录中的消息发送时间,提取异步消息端到端传输时间,并判断是否存在时间延迟。
根据本申请的另一个方面,还提供了一种异步消息的一致性测试装置,包括:
场景模拟单元,用于对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,其中,模拟队列是在消息中间件中预先创建的;
测试结果生成单元,用于根据消息消费者反馈的消息接收记录和消息生产者中的日志记录生成消息一致性测试结果。
在一实施例中,模拟操作包括:正常操作;场景模拟单元包括:
发送模块,用于将模拟队列中的消息发送至消息中间件中的第一目标队列;
第一转发模块,用于从第一目标队列中获取消息并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一实施例中,模拟操作包括:消息丢失操作;场景模拟单元包括:
抹除模块,用于抹除模拟队列中的消息后将模拟队列中的所有剩余消息转发至消息中间件中的第一目标队列;
第二转发模块,用于从第一目标队列中获取消息并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一实施例中,模拟操作包括:消息超时操作;场景模拟单元包括:
延时模块,用于将模拟队列中的消息取出并间隔一段预设的时间后发送至消息中间件中的第一目标队列;
第三转发模块,用于从第一目标队列中获取消息并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一实施例中,模拟操作包括:消息重发操作;场景模拟单元包括:
重发模块,用于将模拟队列中的消息取出并复制一份相同内容的消息后将原消息及复制的消息均发送至消息中间件中的第一目标队列;
第四转发模块,用于从所述第一目标队列中获取消息,并将消息通过消息中间件中的第二目标队列发送至消息消费者;
在一实施例中,异步消息的一致性测试装置还包括:
日志记录模块,用于对消息生产者中的所有消息进行编号并将编号、消息发送时间和消息发送数量记录在日志记录中。
在一实施例中,消息接收记录包括:消息编号、接收到的消息数量和消息接收时间,测试结果生成单元包括:
数量比对模块,用于根据消息编号对比消息接收记录中接收到的消息数量与日志记录中的消息发送数量是否一致;
在一种实施例中,消息接收记录包括:消息编号、消息接收时间,所述测试结果生成单元包括:
时间比对模块,用于根据消息编号对比所述消息接收记录中的消息接收时间和所述日志记录中的消息发送时间,提取异步消息端到端传输时间,并判断是否存在时间延迟。
本申请通过在消息中间件中建立模拟队列,并利用该模拟队列进行四种消息一致性场景的模拟(分别为无故障穿透(正常情况)、消息丢失、消息超时、消息重发这四种情况),根据这四种模拟场景分别设计消息一致性的测试案例,并通过对比消息生产者的日志记录和消息消费者的消息接收记录来得到测试结果,实现了对异步消息系统的消息一致性进行完整测试并评估的功能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为异步消息系统的示例。
图2为协同处理方式的示意图。
图3为异步消息系统的一种消息传递图。
图4为异步消息系统的另一种消息传递图。
图5为本申请提供的一种异步消息的一致性测试方法流程图。
图6为本申请实施例中异步消息系统内部的消息传递图。
图7为本申请实施例中提出的一种异步消息系统结构图。
图8为本申请实施例中正常情况下的消息传递图。
图9为本申请实施例中消息丢失情况下的消息传递图。
图10为本申请实施例中消息超时情况下的消息传递图。
图11为本申请实施例中消息一致性指标数据统计方法功能模块图。
图12为本申请实施例中消息一致性分析结果表。
图13为本申请提供的一种异步消息的一致性测试装置结构框图。
图14为本申请实施例中场景模拟单元的结构框图。
图15为本申请实施例中场景模拟单元的结构框图。
图16为本申请实施例中场景模拟单元的结构框图。
图17为本申请实施例中测试结果生成单元的结构框图。
图18为本申请实施例中一种电子设备的具体实施方式。
图19为本申请实施例中消息重发情况下的消息传递流程图。
图20为本申请实施例中场景模拟单元(消息重发)的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
结合背景技术中的介绍,随着金融系统的业务功能日益增加,为了保证系统的可维护性,庞大的系统会进行必要的模块化拆分,不同的模块可能会由其自身的数据源进行读写。为了完成某项复杂的业务功能,会存在多个数据源同时进行读写的情况,这时,多个数据源需要协同处理,协同处理的方式通常有:同步交易确认各方结果和异步消息处理两种。同步交易确认即为通常使用的二阶段提交,如图2所示,引入一个组织节点,为了保持多个参与节点的一致,组织节点通常会等待所有参与方返回当前处理情况后再做提交或取消操作,这个等待的过程会额外占用部分的系统资源。这种方式适用于对实时性要求高的消息系统,通过付出较高的系统资源即可获得实时消息处理。但是,当对消息系统的实时性要求不高的时候,通常会为了节约系统资源再多节点中通过消息传递处理的方式,形成异步消息系统架构,保持多节点的最终的一致性。以常见的异步消息系统应用场景为例,如图3所示,消息生产者给消息消费者转账10元,需要对消息生产者减少10元,对消息消费者增加10元,考虑到消息可能发送失败,或者也可能重复发送,因此,消息生产者的本地操作和向消息中间件的队列发消息这两个动作不可以同时发生。如图4所示,消息中间件可以记录消息生产者本地操作前消息M1、消息生产者本地操作后的结果消息M2,通过流处理程序对M1和M2的匹配确认消息生产者的本地操作成功之后,再往消息消费者处发送消息。
目前,在针对异步消息系统的一致性测试中,常见的模拟系统故障的方式有系统宕机、切断网络等,这类模拟虽然方式简单,但能够影响整个节点的相关服务。对于异步消息系统,应当更加深入细致到消息级别的异常。但是,目前的异步消息系统的一致性测试中,常用的一致性指标为:发送和接收消息的总量是否一致,该指标设置及统计方法比较笼统,并不能细致到单个消息级别的一致性判断。
基于上述问题,本申请提供了一种异步消息的一致性测试方法,如图5所示,包括:
S501:对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,其中,模拟队列是在消息中间件中预先创建的。
在进行对异步消息系统的测试之前,需要先分析目前异步消息系统的信息处理路径。例如,消息生产者给消息消费者发送消息路径如图6所示,消息生产者发送消息1至目标队列,消息消费者获取目标队列的消息1后执行本地处理,至此,本消息传输完成。
在一具体实施例中,如图7所示,在异步消息系统的消息中间件中创立一个模拟队列和一个异常模拟模块,消息生产者将消息1发送到模拟队列中,异常模拟模块用于对模拟队列中的消息进行测试场景模拟。异常模拟模块可以模拟以下四种场景:1、正常场景;2、消息丢失场景;3、消息超时场景;4、消息重发场景。模拟队列可以通过异常消息系统中的队列管理器进行创建。
S502:根据消息消费者反馈的消息接收记录和消息生产者中的日志记录生成消息一致性测试结果。
在一具体实施例中,当异常模拟模块完成了场景模拟后,消息通过后续的流程(目标队列-消息消费者)被消息消费者所接收,消息消费者根据接收到的消息执行本地操作后生成一条消息接收记录。与此同时,在消息生产者中还有一日志记录。根据日志记录和消息接收记录的对比可以得到消息一致性的测试结果。
图5所述的方法的执行主体可以为PC、终端等,通过在消息中间件中增加模拟队列,并利用异常模拟模块对所有的可能发生的场景进行模拟,实现了对异步消息系统中的消息的一致性进行全方位测试的效果。
在一实施例中,模拟操作包括:无故障穿透操作(正常操作);对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,如图8所示,包括:
S801:将模拟队列中的消息发送至消息中间件中的第一目标队列。
在一具体实施例中,当模拟操作为无故障穿透的时候,消息生产者发送消息1至模拟队列,,模拟操作将其中的消息1发送至目标队列。
S802:从第一目标队列中获取消息,并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一具体实施例中,消息消费者获取目标队列中的消息1后执行本地处理操作。
在一实施例中,模拟操作包括:消息丢失操作;对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,如图9所示,包括:
S901:抹除模拟队列中的消息后将模拟队列中的所有剩余消息转发至消息中间件中的目标队列。
在一具体实施例中,消息生产者发送消息1、2至模拟队列,当需要模拟“消息丢失”这一情形的时候,从模拟队列中抹除消息2,然后将剩余的所有消息(消息1)转发至第一目标队列。
S902:从第一目标队列中获取消息,并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一具体实施例中,消息消费者从目标队列接收消息1后执行本地处理操作。由于消息2已被抹除,所以,在消息消费者处会显示未收到消息2,因此,在消息消费者的接收消息记录中,消息2为空缺。
图9所示的方法的执行主体可以为PC终端等,通过将模拟队列中的消息抹除实现了模拟消息丢失情景的功能。
在一实施例中,模拟操作包括:消息超时操作;对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,如图10所示,包括:
S1001:将模拟队列中的消息取出并间隔一段预设的时间后发送至消息中间件中的第一目标队列。
在一具体实施例中,消息生产者发送消息1至模拟队列。当需要模拟“消息超时”这一场景时,从模拟队列中将消息1取出后延时一段时间(例如5-10ms)再发送到目标队列中。
S1002:从第一目标队列中获取消息,并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一具体实施例中,消息消费者从目标队列接收消息1后执行本地处理操作。由于在消息的传递过程中发生了延迟,因此,在消息消费者的消息接收记录上记录的消息接收时间会比正常情况下的时间有所延迟。
在一实施例中,模拟操作还包括消息重发操作,对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,如图19所示,包括:
S1901:将模拟队列中的消息取出并复制一份相同内容的消息后将原消息及复制的消息均发送至消息中间件中的第一目标队列。
S1902:从第一目标队列中获取消息,并将消息通过消息中间件中的第二目标队列发送至消息消费者。
图10和图19所示的方法的执行主体可以为PC终端等,通过将模拟队列中的消息取出后间隔一段时间再进行转发或者将消息复制实现了模拟消息超时(延迟)和重发情景的功能。
在一实施例中,异步消息的一致性测试方法还包括:
对消息生产者中的所有消息进行编号并将编号、消息发送时间和消息发送数量记录在日志记录中。
在一具体实施例中,在消息生产者中,如图11所示,有一消息加戳模块,该模块的主要功能时对消息生产者所发出的消息进行加戳,消息戳的相关信息包含了消息生产者的线程ID,消息编号,消息生成时间等,每条消息的消息编号都是唯一的。并且在消息生产者中还有一日志记录,其中记录有该消息生产者发送的每条消息的线程ID、消息编号、时间戳等。
在一实施例中,消息接收记录包括:消息编号、接收到的消息数量和消息接收时间,根据消息消费者反馈的消息接收记录和消息生产者中的日志记录生成消息一致性测试结果,包括:
根据消息编号对比消息接收记录中接收到的消息数量与日志记录中的消息发送数量是否一致;
根据消息编号对比消息接收记录中的消息接收时间和日志记录中的消息发送时间是否一致。
在一具体实施例中,当获得了消息消费者中的消息接收记录和消息生产者中的日志记录后,如图11中的消息分析模块和图12所示,以“线程ID+消息编号”为维度统计消息发送数量和接收数量,如果出现消息发送数量大于0,而消息接收数量为0,则说明出现消息丢失。
在一具体实施例中,除了统计消息的一致性之外,本方法还能够作为异步消息系统的性能测试辅助工具,提取异步消息端到端的传输时间,即消息的接收时间和消息的发送时间之间的时间差。除了消息吞吐率之外,消息端到端的传输时间也能够很好地衡量消息中间件的传输性能,所以该数据指标能够对消息中间件性能提供参考。
本申请通过增加模拟队列和异常模拟,对异步消息的正常转发、消息丢失、消息延时、消息重发这四种场景进行模拟,并且不会影响其他消息队列的正常处理。并且,本申请将每条发出的消息加盖消息戳,并通过比对日志记录和消息接收记录获取每条消息一致性指标数据。
基于同一发明构思,本申请实施例还提供了一种异步消息的一致性测试装置,可以用于实现上述实施例中所描述的方法,如下面实施例所述。由于该异步消息的一致性测试装置解决问题的原理与异步消息的一致性测试方法相似,因此异步消息的一致性测试装置的实施可以参见异步消息的一致性测试方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
如图13所示,为本申请提供的一种异步消息的一致性测试装置,包括:
场景模拟单元1201,用于对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,其中,模拟队列是在消息中间件中预先创建的;
测试结果生成单元1202,用于根据消息消费者反馈的消息接收记录和消息生产者中的日志记录生成消息一致性测试结果。
在一实施例中,模拟操作包括:无故障穿透操作(正常操作);如图14所示,场景模拟单元1201包括:
发送模块1301,用于将模拟队列中的消息发送至消息中间件中的第一目标队列,;
第一转发模块1302,用于从第一目标队列中获取消息并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一实施例中,模拟操作包括:消息丢失操作;如图15所示,场景模拟单元1201包括:
抹除模块1401,用于抹除模拟队列中的消息后将模拟队列中的所有剩余消息转发至消息中间件中的第一目标队列;
第二转发模块1402,用于从第一目标队列中获取消息并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一实施例中,模拟操作包括:消息超时操作;如图16所示,场景模拟单元1201包括:
延时模块1501,用于将模拟队列中的消息取出并间隔一段预设的时间后发送至消息中间件中的第一目标队列;
第三转发模块1502,用于从第一目标队列中获取消息并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一实施例中,模拟操作包括:消息重发操作;如图20所示,场景模拟单元1201包括:
重发模块2001,用于用于将模拟队列中的消息取出并复制一份相同内容的消息后将原消息及复制的消息均发送至消息中间件中的第一目标队列;
第四转发模块2002,用于从所述第一目标队列中获取消息,并将消息通过消息中间件中的第二目标队列发送至消息消费者。
在一实施例中,异步消息的一致性测试装置还包括:
日志记录模块,用于对消息生产者中的所有消息进行编号并将编号、消息发送时间和消息发送数量记录在日志记录中。
在一实施例中,消息接收记录包括:消息编号、接收到的消息数量和消息接收时间,如图17所示,测试结果生成单元1202包括:
数量比对模块1601,用于对比消息接收记录中接收到的消息数量与日志记录中的消息发送数量是否一致;
时间比对模块1602,用于根据消息编号对比消息接收记录中的消息接收时间和日志记录中的消息发送时间是否一致(时间差异)。
本装置具有以下优点:
1)通过引入模拟队列和异常模拟模块,可以对单个队列出现的正常场景、消息丢失、消息延时等情况进行模拟,避免删除队列、宕机、切断网络等操作引起的大范围影响。
2)通过异常模拟模块的配置化设置,可以灵活设计并可定制化实现各种复杂的异常场景。
3)通过对每条消息附加信息戳,并比对日志记录及消息接收记录,获取每条消息的一致性。解决了目前发送和接收消息总量一致的一致性指标设置下,在消息出现丢失、重传等情况下,指标不能准确衡量消息一致性的问题,将消息一致性统计精确到每条消息。
3)本申请提出的消息一致性指标统计装置,亦可作为性能测试的辅助工具,通过每条消息发送和接收时间戳比对,可提取消息传输端到端的响应时间指标结果,为性能测试结果提供依据。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种电子设备的具体实施方式,参见图18,所述电子设备具体包括如下内容:
处理器(processor)1701、内存1702、通信接口(Communications Interface)1703、总线1704和非易失性存储器1705;
其中,所述处理器1701、内存1702、通信接口1703通过所述总线1704完成相互间的通信;
所述处理器1701用于调用所述内存1702和非易失性存储器1705中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S501:对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,其中,模拟队列是在消息中间件中预先创建的。
S502:根据消息消费者反馈的消息接收记录和消息生产者中的日志记录生成消息一致性测试结果。
本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S501:对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,其中,模拟队列是在消息中间件中预先创建的。
S502:根据消息消费者反馈的消息接收记录和消息生产者中的日志记录生成消息一致性测试结果。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。
Claims (18)
1.一种异步消息的一致性测试方法,其特征在于,包括:
对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,其中,所述模拟队列是在消息中间件中预先创建的;
根据所述消息消费者反馈的消息接收记录和所述消息生产者中的日志记录生成消息一致性测试结果。
2.根据权利要求1所述的一致性测试方法,其特征在于,所述模拟操作包括:正常操作;所述对所述消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,包括:
将所述模拟队列中的消息发送至所述消息中间件中的第一目标队列;
从所述第一目标队列中获取消息,并将消息通过所述消息中间件中的第二目标队列发送至所述消息消费者。
3.根据权利要求1所述的一致性测试方法,其特征在于,所述模拟操作包括:消息丢失操作;所述对所述消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,包括:
抹除所述模拟队列中的消息后将所述模拟队列中的所有剩余消息转发至所述消息中间件中的第一目标队列;
从所述第一目标队列中获取消息,并将消息通过所述消息中间件中的第二目标队列发送至所述消息消费者。
4.根据权利要求1所述的一致性测试方法,其特征在于,所述模拟操作包括:消息超时操作;所述对所述消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,包括:
将所述模拟队列中的消息取出并间隔一段预设的时间后发送至所述消息中间件中的第一目标队列;
从所述第一目标队列中获取消息,并将消息通过所述消息中间件中的第二目标队列发送至所述消息消费者。
5.根据权利要求1所述的一致性测试方法,其特征在于,所述模拟操作包括:消息重发操作;所述对所述消息生产者发送至模拟队列中的消息进行模拟消息重复发送操作,并将模拟操作后的消息发送给消息消费者,包括:
将所述模拟队列中的消息取出并复制一份相同内容的消息后将原消息及复制的消息均发送至所述消息中间件中的第一目标队列;
从所述第一目标队列中获取消息,并将消息通过所述消息中间件中的第二目标队列发送至所述消息消费者。
6.根据权利要求1所述的一致性测试方法,其特征在于,还包括:
对所述消息生产者中的所有消息进行编号并将所述编号、消息发送时间和消息发送数量记录在所述日志记录中。
7.根据权利要求1所述的一致性测试方法,其特征在于,所述消息接收记录包括:消息编号、接收到的消息数量,所述根据所述消息消费者反馈的消息接收记录和所述消息生产者中的日志记录生成消息一致性测试结果,包括:
根据消息编号对比所述消息接收记录中接收到的消息数量与所述日志记录中的消息发送数量是否一致。
8.根据权利要求1所述的一致性测试方法,其特征在于,所述消息接收记录包括:消息编号、消息接收时间,所述根据所述消息消费者反馈的消息接收记录和所述消息生产者中的日志记录生成消息一致性测试结果,还包括:
根据消息编号对比所述消息接收记录中的消息接收时间和所述日志记录中的消息发送时间,提取异步消息端到端传输时间,并判断是否存在时间延迟。
9.一种异步消息的一致性测试装置,其特征在于,包括:
场景模拟单元,用于对消息生产者发送至模拟队列中的消息进行模拟操作,并将模拟操作后的消息发送给消息消费者,其中,所述模拟队列是在消息中间件中预先创建的;
测试结果生成单元,用于根据所述消息消费者反馈的消息接收记录和所述消息生产者中的日志记录生成消息一致性测试结果。
10.根据权利要求9所述的一致性测试装置,其特征在于,所述模拟操作包括:正常操作;所述场景模拟单元包括:
发送模块,用于将所述模拟队列中的消息发送至所述消息中间件中的第一目标队列;
第一转发模块,用于从所述第一目标队列中获取消息并将消息通过所述消息中间件中的第二目标队列发送至所述消息消费者。
11.根据权利要求9所述的一致性测试装置,其特征在于,所述模拟操作包括:消息丢失操作;所述场景模拟单元包括:
抹除模块,用于抹除所述模拟队列中的消息后将所述模拟队列中的所有剩余消息转发至所述消息中间件中的第一目标队列;
第二转发模块,用于从所述第一目标队列中获取消息并将消息通过所述消息中间件中的第二目标队列发送至所述消息消费者。
12.根据权利要求9所述的一致性测试装置,其特征在于,所述模拟操作包括:消息超时操作;所述场景模拟单元包括:
延时模块,用于将所述模拟队列中的消息取出并间隔一段预设的时间后发送至所述消息中间件中的第一目标队列;
第三转发模块,用于从所述第一目标队列中获取消息并将消息通过所述消息中间件中的第二目标队列发送至所述消息消费者。
13.根据权利要求9所述的一致性测试装置,其特征在于,所述模拟操作包括:消息重发操作;所述场景模拟单元包括:
重发模块,用于将所述模拟队列中的消息取出并复制一份相同内容的消息后将原消息及复制的消息均发送至所述消息中间件中的第一目标队列;
第四转发模块,用于从所述第一目标队列中获取消息,并将消息通过所述消息中间件中的第二目标队列发送至所述消息消费者。
14.根据权利要求9所述的一致性测试装置,其特征在于,还包括:
日志记录模块,用于对所述消息生产者中的所有消息进行编号并将所述编号、消息发送时间和消息发送数量记录在所述日志记录中。
15.根据权利要求9所述的一致性测试装置,其特征在于,所述消息接收记录包括:消息编号、接收到的消息数量和消息接收时间,所述测试结果生成单元包括:
数量比对模块,用于根据消息编号对比所述消息接收记录中接收到的消息数量与所述日志记录中的消息发送数量是否一致。
16.根据权利要求9所述的一致性测试装置,其特征在于,所述消息接收记录包括:消息编号、消息接收时间,所述测试结果生成单元包括:
时间比对模块,用于根据消息编号对比所述消息接收记录中的消息接收时间和所述日志记录中的消息发送时间,提取异步消息端到端传输时间,并判断是否存在时间延迟。
17.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7中任意一项所述异步消息的一致性测试方法。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7中任一项所述异步消息的一致性测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010235348.4A CN111464384A (zh) | 2020-03-30 | 2020-03-30 | 一种异步消息的一致性测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010235348.4A CN111464384A (zh) | 2020-03-30 | 2020-03-30 | 一种异步消息的一致性测试方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111464384A true CN111464384A (zh) | 2020-07-28 |
Family
ID=71680521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010235348.4A Pending CN111464384A (zh) | 2020-03-30 | 2020-03-30 | 一种异步消息的一致性测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111464384A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113177178A (zh) * | 2021-04-30 | 2021-07-27 | 北京深演智能科技股份有限公司 | 消息处理方法、装置、非易失性存储介质及处理器 |
CN113612679A (zh) * | 2021-07-29 | 2021-11-05 | 百度在线网络技术(北京)有限公司 | 一种消息验证方法、装置、电子设备及存储介质 |
CN115102672A (zh) * | 2022-06-15 | 2022-09-23 | 珠海格力电器股份有限公司 | 数据处理方法、系统、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101540705A (zh) * | 2009-04-01 | 2009-09-23 | 中兴通讯股份有限公司 | 一种消息代理装置及测试环境的模拟生成方法 |
CN103888306A (zh) * | 2012-12-19 | 2014-06-25 | 阿里巴巴集团控股有限公司 | 一种对消息转发系统的性能测试方法及性能测试设备 |
US20160373367A1 (en) * | 2015-06-18 | 2016-12-22 | The Boeing Company | System and method for identifying performance characteristics in asynchronous networks |
CN107294803A (zh) * | 2017-06-15 | 2017-10-24 | 北京小度信息科技有限公司 | 响应信息一致性测试方法及装置 |
CN107302476A (zh) * | 2017-08-04 | 2017-10-27 | 上海爱数信息技术股份有限公司 | 一种测试异步交互系统的自动化测试方法与系统 |
-
2020
- 2020-03-30 CN CN202010235348.4A patent/CN111464384A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101540705A (zh) * | 2009-04-01 | 2009-09-23 | 中兴通讯股份有限公司 | 一种消息代理装置及测试环境的模拟生成方法 |
CN103888306A (zh) * | 2012-12-19 | 2014-06-25 | 阿里巴巴集团控股有限公司 | 一种对消息转发系统的性能测试方法及性能测试设备 |
US20160373367A1 (en) * | 2015-06-18 | 2016-12-22 | The Boeing Company | System and method for identifying performance characteristics in asynchronous networks |
CN107294803A (zh) * | 2017-06-15 | 2017-10-24 | 北京小度信息科技有限公司 | 响应信息一致性测试方法及装置 |
CN107302476A (zh) * | 2017-08-04 | 2017-10-27 | 上海爱数信息技术股份有限公司 | 一种测试异步交互系统的自动化测试方法与系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113177178A (zh) * | 2021-04-30 | 2021-07-27 | 北京深演智能科技股份有限公司 | 消息处理方法、装置、非易失性存储介质及处理器 |
CN113612679A (zh) * | 2021-07-29 | 2021-11-05 | 百度在线网络技术(北京)有限公司 | 一种消息验证方法、装置、电子设备及存储介质 |
CN115102672A (zh) * | 2022-06-15 | 2022-09-23 | 珠海格力电器股份有限公司 | 数据处理方法、系统、计算机设备和存储介质 |
CN115102672B (zh) * | 2022-06-15 | 2024-04-05 | 珠海格力电器股份有限公司 | 数据处理方法、系统、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897691B (zh) | 基于接口模拟服务的数据处理方法、装置、服务器和介质 | |
CN112073269B (zh) | 区块链网络测试方法、装置、服务器及存储介质 | |
CN107402880B (zh) | 一种测试方法及电子设备 | |
US9672137B1 (en) | Shadow test replay service | |
CN111464384A (zh) | 一种异步消息的一致性测试方法及装置 | |
US8352907B2 (en) | Software application recreation | |
US8516451B2 (en) | System and method for creating virtual callback objects | |
US9697104B2 (en) | End-to end tracing and logging | |
CN110750592B (zh) | 数据同步的方法、装置和终端设备 | |
CN108268364A (zh) | 异常事件回放方法、装置及设备 | |
CN112395177A (zh) | 业务数据的交互处理方法、装置、设备及存储介质 | |
CN109587351B (zh) | 一种呼叫测试方法、装置、设备及存储介质 | |
CN113553260B (zh) | 测试方法、测试装置、设备和介质 | |
CN116881145B (zh) | 基于流量回放的接口测试方法、装置、设备以及存储介质 | |
CN111930611B (zh) | 一种测试数据的统计方法和装置 | |
CN117194242A (zh) | 交易系统的日志回放方法及其装置、电子设备、存储介质 | |
US20120284167A1 (en) | Performance Testing Tool for Financial Applications | |
CN114895879B (zh) | 管理系统设计方案确定方法、装置、设备及存储介质 | |
CN112131611B (zh) | 数据正确性验证方法、装置、设备、系统及存储介质 | |
US9990274B2 (en) | Testing integrated business systems | |
CN115185797A (zh) | 视觉算法模型的测试方法、系统、电子设备及存储介质 | |
CN114036060A (zh) | 用于芯片测试的方法、系统和计算机可读介质 | |
Anderson | Performance modelling of reactive web applications using trace data from automated testing | |
CN107885659A (zh) | 对客户端的请求模拟响应的方法及装置、设备 | |
US11429513B1 (en) | Testing and verifying cloud services using a computational graph |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200728 |