请教一个问题,怎么调用第三方接口的时候知道返回的结果?

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

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

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

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

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

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

阅读 3.9k
3 个回答

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题