网关项目见链接:网关项目
假设现有一系列接口,这些接口有些是同步的,有些是异步的,我们需要编写一个网关层,将这些江口统一暴露成异步接口。
当前项目(RawInterface)实现的是右侧大方框圈出的部分,模拟并暴露原始的同步接口和异步接口
- /synchronous-task/run (POST) 运行同步任务,阻塞等待任务执行完成,返回任务执行结果
- /asynchronous-failed-task/run (POST) 运行同步任务,阻塞等待任务执行完成,返回任务执行结果
- /asynchronous-task/submit (POST) 提交异步任务,立即返回
- /asynchronous-task/check (GET) 检查异步任务的执行状态,返回任务执行结果
- /asynchronous-failed-task/submit (POST) 提交异步任务,立即返回
- /asynchronous-failed-task/check (GET) 检查异步任务的执行状态,返回任务执行结果
- run 接口,睡眠0-5秒之间的随机时间,然后返回任务执行结果
- submit 接口,将键值对<任务id, 任务提交时间>存入ConcurrentHashMap
- check 接口,根据任务id,从ConcurrentHashMap中获取任务提交时间,如果当前时间距离任务提交时间超过5秒,则返回成功,否则返回运行中