模块间建链失败问题的分析及解决

很长时间以来,我每天花在地铁上的时间都在一个小时以上。闲来无事,我就在手机上下载了多看阅读,并且购买了很多电子书。最近,我阅读了《异类》,颇有感触。作者在书中提出了一个“一万小时”的定律,也就是说,当一个人花在某件事情上的时间超过一万个小时之后,就会发生质的改变,就会做到比绝大多数人好。我们耳熟能详的一些天才,像盖茨、乔伊等等,虽然天赋很高,但自身也很勤奋,花了比常人多得多的时间在自己所喜欢的事业上。也就说是,是“一万小时”定律让他们与众不同。

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的林口网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

量变引起质变的规律也适用于软件开发领域,本文中提到的问题,即是一例。

问题描述

在某项目进行了长期的自动测试工作之后,我们组建了如下的系统架构:

最近,在进行自动测试的过程中,我们发现测试用例的执行总是失败的。更具体地说,就是消息触发脚本无法调用发消息工具,两者之间无法建链。

原因分析

本测试系统已搭建了长达两年,已经累积了上千个测试用例。之前从未遇到过此类消息触发脚本无法调用发消息工具的问题。那么,究竟是什么原因引起的呢?

我们首先检查了自动测试环境,发现一切正常。之后,我们修改了自动测试的调用脚本,变成了手动触发。也就是说,当发消息工具成功启动之后,我们再点击消息触发脚本,发现链路能够正常建立,且消息发送正常。那么,为什么自动测试的时候就不能正常建链呢?

我们再回过头来分析了一下自动测试的整个流程。当自动测试启动之后,消息触发脚本和发消息工具几乎是同时开始运行的,而发消息工具运行起来之后,要先读取配置文件中的测试用例,然后绑定IP和端口号,完成之后再等待和消息触发脚本建链。前期的测试用例比较少,所有当消息触发脚本监测与发消息工具的链路的时候,后者已经成功读取了配置文件,并绑定了IP和端口号。这样,后续的流程就能够正常执行。

但是,随着测试用例的累积,当消息触发脚本开始监测与发消息工具的链路的时候,后者还在读取配置文件,并未绑定IP和端口号。这样,消息触发脚本发现链路还不具备,因此执行就失败了。这也就是我们看到的现象。之所以手动能够执行成功,是因为我们点击消息触发脚本的时候,发消息工具早就完成了读配置和绑定IP与端口号的操作(手动操作要比自动操作慢很多),就不存在建链不成功的问题了。

问题解决

根据以上分析,我们只需要给发消息工具足够的时间,让消息触发脚本晚点与发消息工具建链就可以了。

我们在消息触发脚本中添加了如下语句:

 
 
  1. ping 127.0.0.1 -n 30 

当消息触发脚本执行了30次ping操作之后,发消息工具早就做好了准备工作,于是建链成功,后续流程顺利执行。

总结

本文中提到的建链失败问题的解决办法虽然简单,但该问题却提醒了我们,在两个模块需要进行消息交互的时候,发送消息的模块一定要等到接收消息的模块“准备好”之后,再发送消息过去。也就说是,软件模块的初始化需要时间,在设计软件的时候,我们一定要将各个模块的初始化时间考虑进去。

【本文是专栏作者周兆熊的原创文章,作者微信公众号:周氏逻辑(logiczhou)】

本文标题:模块间建链失败问题的分析及解决
路径分享:http://www.hantingmc.com/qtweb/news28/279778.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联