1. 背景
项目中,当前服务需要feign调用别的服务获取相关数据,并作为入参进行相关的sql查询,而且这样的sql查询不止一个,考虑到耗时问题,所以利用CompletableFuture类进行异步处理,以空间换时间,节省接口响应时间。但是,在进行异步处理时,每个CompletableFuture类中都要进行feign调用,出现了token失效的问题。
2. CompletableFuture类简介
CompletableFuture 类是 Java 中用于异步编程和处理异步任务的工具类。它是 Java 8 引入的一部分,提供了一种方便的方式来处理异步操作,例如并行执行多个任务、等待多个任务完成等。
CompletableFuture 可以通过 runAsync 或者 supplyAsync 方法异步执行一个任务,使得任务在独立的线程中执行,而不会阻塞主线程。这两方法的区别在于任务是否有返回值
。
3. 问题解决
将feign调用别的服务获取相关数据的操作置于CompletableFuture类多线程异步之前,这样只需要进行一次feign调用即可,并且不会出现token失效的情况。