Spring Boot Resilience4j重试不重试

n53p2ov0  于 2022-11-23  发布在  Spring
关注(0)|答案(1)|浏览(163)

我有以下代码,如果我在控制器方法上保留retry注解,则会重试,但如果我在另一个方法上保留retry注解,则不会重试。场景是,在API方法createOrder()中,我从外部系统获取orderId,该方法工作正常。但我需要重试createOrder(String orderId)方法,该方法有时会失败。
第一个

eqfvzcg8

eqfvzcg81#

这是因为***代理***。使用@Retry注解时,将创建并使用类的代理示例。代理的工作方式是拦截从一个Bean/类到另一个Bean/类的调用,但它不能拦截Bean/类中方法到方法的调用。
因此,解决方法是***将方法移动到不同的类***。一旦方法被移动到不同的类,spring代理将考虑来自单独bean的调用,并且它可以拦截。

相关问题