下方的代码都调用了future.get()方法来阻塞获取结果,但实际上有必要吗?万一我们的其中一个异步处理超过了钉钉规定的1500ms响应时间,那异步的作用就不是很大,仅仅是多个回调之间会并行,我看wxjava中之所以调用是因为它要结束session调用sessionEndAccess方法,而钉钉的没有这些,是否有必要管异步路由的结果?
|
if (futures.size() > 0) { |
|
this.executorService.submit(() -> { |
|
for (Future<Boolean> future : futures) { |
|
try { |
|
future.get(); |
|
} catch (InterruptedException e) { |
|
log.error("Error happened when wait task finish", e); |
|
Thread.currentThread().interrupt(); |
|
} catch (ExecutionException e) { |
|
log.error("Error happened when wait task finish", e); |
|
} |
|
} |
|
}); |
|
} |
又考虑了下,如果全部设置成异步不判定结果都返回true的也有个麻烦,就是如果异步失败的话需要自己记录失败,而无法仅仅通过获取推送失败的事件列表这个接口来获取全部失败的推送,需要加上自己记录的失败才是全部的失败记录。
下方的代码都调用了
future.get()方法来阻塞获取结果,但实际上有必要吗?万一我们的其中一个异步处理超过了钉钉规定的1500ms响应时间,那异步的作用就不是很大,仅仅是多个回调之间会并行,我看wxjava中之所以调用是因为它要结束session调用sessionEndAccess方法,而钉钉的没有这些,是否有必要管异步路由的结果?DtJava/src/main/java/com/github/tingyugetc520/ali/dingtalk/message/DtMessageRouter.java
Lines 142 to 155 in 4d4e286
又考虑了下,如果全部设置成异步不判定结果都返回
true的也有个麻烦,就是如果异步失败的话需要自己记录失败,而无法仅仅通过获取推送失败的事件列表这个接口来获取全部失败的推送,需要加上自己记录的失败才是全部的失败记录。