模拟任务阻塞处理策略

模拟任务阻塞处理策略

官方描述

阻塞处理策略:调度过于密集执行器来不及处理时的处理策略;

  1. 单机串行(默认):调度请求进入单机执行器后,调度请求进入FIFO队列并以串行方式运行;
  2. 丢弃后续调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,本次请求将会被丢弃并标记为失败;
  3. 覆盖之前调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列,然后运行本地调度任务;

为了验证并且更加熟悉XXL-JOB这一块的功能,遂做了如下的实验:

使用PowerMockito+MockServer测试外部服务

前言

    我们在项目开发中,很有可能会与第三方服务进行通讯,比如发短信、导入账单等等,这些服务写好后,如何能保证是OK的?这就需要进行单元测试,但是每次跑持续集成时,不可能真实的去调用这些发送短信、导入账单的真实接口,所以这里就需要用到强大的mock来模拟这些接口,以实现这些接口。
    所以这里我们用到了powermock和mockserver两个强大的工具。

powermockito和mockito的区别:

  1. mockito用代理实现mock,而powermockito是直接去修改字节码实现更强大的mock。
  2. 所以说powermockito是mockito的一个更加强大的扩展。
  3. mockito不能mock静态、final、私有方法等。
  4. powermockito号称是无所不能的PowerMock,上面mockito的缺陷都可以很好的弥补掉。

使用mockito进行单元测试

写这篇文档的原因:
现在项目中的mock单元测试配置有一点问题:

  1. 单元测试很慢,测试类继承BaseTest,每次测试时都会去加载xml文件到spring容器中,而这个是没有必要,因为mock测试就是用于模拟 被测试类 所调用的其他类的方法,设定这些方法的返回值(即打桩),因此,不需要加载任何spring文件,除非你要调用真实方法操作数据库或者dubbo服务等接口。
  2. 代码中既使用了注解@mock,又使用了spring的配置方式,产生了冗余配置。基于上面问题,说明使用者对mockito的使用并不是很了解,所以在这边简单介绍一下。

使用Docker安装YApi

YApi去哪儿网大前端技术中心(YMFE)开发并开源的一款高效、易用、功能强大的API管理平台。支持项目管理接口管理MockServer文档管理等等实用功能。

关于YApi

  1. 源码:https://github.com/YMFE/yapi
  2. 使用教程:https://yapi.ymfe.org/documents/index.html
  3. 在线Demo:http://yapi.demo.qunar.com/
  4. 最新版本:https://github.com/YMFE/yapi/releases
  5. 版本记录:https://yapi.ymfe.org/documents/CHANGELOG.html