0

在一个方法里调用了两个第三方接口

接口一:异步生成数据库数据,数据量比较大可能要五到十秒,根据勾选的用例而定

接口二:先获取数据库id,直接获取接口一所生成的数据进行操作

请问如何在同步代码里面执行接口一和接口二?

我写的就是判断id 如果有就去获取 ,没有就线程睡眠一段时间再去获取

这样写太僵硬了 有更好地实现吗

Apple 35
12月4日提问
3 个回答
1

法一.接口二用CompleteFuture,异步获取,没有就阻塞直到有返回值,也可以设定个超时时间
法二.定时任务,每隔几秒去获取
希望能帮到你

0

建议使用guava的FutureCallback调用接口一,然后再onSuccess里面调用接口二。接口一返回后直接执行接口二,这样相对来说比较简单!

0

MySQL有binlog功能,接口二的触发条件可以改为监听binlog,发现MySQL有变动,再执行接口二。或者在接口一查库完成后主动发送一个消息,接口二的触发条件就是监听接口一的消息了。

不过,接口一和接口二都是第三方的接口,没法改...

所以,我觉得你那个僵硬方法对这个问题来说是挺好的。

撰写答案

推广链接