Spring Cloud 疑难杂症之 CompletableFuture 与 Openfeign 一起使用的问题

15 篇文章 1 订阅
2 篇文章 0 订阅

CompletableFuture 与 Openfeign 一起使用的问题

问题描述

  • 直接错误信息
    Could not find class [org.springframework.boot.autoconfigure.condition.OnPropertyCondition]

java.util.concurrent.CompletionException: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration c lass [org.springframework.cloud.loadbalancer.annotation.LoadBalancerClientConfiguration]; nested exception is java.lang.IllegalArgumentException: Could not find class [org.springframework.boot.autoconfigure.condition.OnPropertyCondition]
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture A s y n c R u n . r u n ( C o m p l e t a b l e F u t u r e . j a v a : 1739 )   [ n a : n a ] a t j a v a . b a s e / j a v a . u t i l . c o n c u r r e n t . C o m p l e t a b l e F u t u r e AsyncRun.run(CompletableFuture.java:1739) ~[na:na] at java.base/java.util.concurrent.CompletableFuture AsyncRun.run(CompletableFuture.java:1739) [na:na]atjava.base/java.util.concurrent.CompletableFutureAsyncRun.exec(CompletableFuture.java:1728) ~[na:na]
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) ~[na:na]
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) ~[na:na]
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) ~[na:na]
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) ~[na:na]
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) ~[na:na]
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [org.springframework.cloud .loadbalancer.annotation.LoadBalancerClientConfiguration]; nested exception is java.lang.IllegalArgumentException: Could not find class [ org.springframework.boot.autoconfigure.condition.OnPropertyCondition]

  • 直接上伪代码
    CompletableFuture.runAsync(() -> {
    	// feign 调用
    });
    

问题解决

这个问题其实由来已久,Spring Cloud 官方对其已有说明
官方认为此bug优先级并不高,官方不会花精力解决;但是对社区是开放的,社区开发者可以提PR。
目前有开发者提出了一些折衷的解决方案。

  1. 由于此问题与 ForkJoin 线程池底层实现有关,可以为 CompletableFuture 指定自定义线程池
    CompletableFuture.runAsync(() -> {
    	// feign 调用
	}, customThreadPool);

官方已解决该问题

直接上官方链接

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值