异步任务的两种类型:
(1)列表异步任务执行后对任务发起方或调用方有感知,比如发出一个事件或通知
(2)列表异步任务执行后对任务发起方或调用方没有感知,只是改变了系统中的某些状态
点击【批量受理】后,提交任务到batch落地任务流水。具体的受理动作由batch批处理中心进行受理。
像这样异步场景怎么进行自动化集成呢?
测试类import相关Class:
import java.util.concurrent.Callable;
import static java.util.concurrent.TimeUnit.*;
import static org.awaitility.Awaitility.*;
import static org.awaitility.Duration.*;
import static org.awaitility.pollinterval.FibonacciPollInterval.*;
之前也有做法就是通过Thread.sleep来进行等待异步任务处理,但中间等待的时间是不确定的。
awaitility使用步骤:maven工程在pom.xml添加awaitility依赖:
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<version>2.0.0</version>
</dependency>
这里使用轮询的方式检查订单是否到达已受理状态://轮询5s每隔500毫秒进行轮询,延迟100毫秒后进行校验
await().atMost(5, TimeUnit.SECONDS).pollInterval(FIVE_HUNDRED_MILLISECONDS).and().with().pollDelay(100, TimeUnit.MILLISECONDS)
.await().until(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
int orderStatus = getOrderStatus(supplyId, orderNo);
return orderStatus == OrderStatus.ACCEPT.getCode();
}
});
招商店铺中目前存在的都是第2种情况,在业务上的异步主要分以下两类:订单导出类的功能:导出的订单数据较多,使用异步进行交互提交到batch批处理进行处理
以下用订单批量受理场景进行举例:
文章为作者独立观点,不代表股票交易接口观点