英文:
Java Feign Fallback class
问题
以下是您提供的内容的翻译部分:
我正在使用SpringBoot版本1.5.9。
我不明白为什么我的降级类不起作用。
也许是我做错了什么?
我的Feign客户端:
@FeignClient(
name = "prices",
url = "${prices.url}",
configuration = MyFeignConfig.class,
fallbackFactory = FallbackClass.class
)
public interface PricesFeignClient {
@GetMapping("/{userId}")
PriceModel get(
@PathVariable("userId") String userId
);
}
这是降级类:
@Component
public class FallbackClass implements FallbackFactory<PricesFeignClient> {
@Override
public PricesFeignClient create(Throwable cause) {
return new PricesFeignClient() {
@Override
public PriceModel get(String userId) {
System.out.println("LALALA");
return null;
}
};
}
}
理论上,如果我的Feign客户端返回错误,我的降级方法应该起作用。
在这里,在文件中的***prices.url***
中,我指定了错误的URL(模拟了我正在调用的远程服务不可用的情况)。我知道我的Feign客户端应该返回错误,并且应该调用降级类,在降级类中,我应该在控制台中收到消息:***"LALALA"***
。
但是这条消息没有出现在控制台上:我的降级类没有被调用。相反,我收到一个错误,表示未找到请求的资源。
请告诉我可能的问题是什么?我是否可能在某处出错了?
问题在于我现在正试图使我的降级类起作用。然后,我想在降级类中调用另一个Feign客户类,使用不同的URL,以便在我的主要服务不可用时起作用。
请告诉我,谢谢。
英文:
I am using SpringBoot version 1.5.9.
I can’t understand why my Fallback class doesn’t work out.
Maybe I'm doing something wrong?
My Feign client:
@FeignClient(
name = "prices",
url = "${prices.url}",
configuration = MyFeignConfig.class,
fallbackFactory = FallbackClass.class
)
public interface PricesFeignClient {
@GetMapping("/{userId}")
PriceModel get(
@PathVariable("userId") String userId
);
}
Here is the fallback class:
@Component
public class FallbackClass implements FallbackFactory<PricesFeignClient> {
@Override
public PricesFeignClient create(Throwable cause) {
return new PricesFeignClient() {
@Override
public PriceModel get(String userId) {
System.out.println("LALALA");
return null;
}
};
}
}
In theory, my fallback method should work out if my Feign client returns an error.
Here in the Feign client in the files in prices.url I specified the wrong URL (simulated the situation that my remote service to which I am making a call is unavailable). Knowing my Feign client should return with an error and the Fallback class should be called in which in the console I should receive the message: "LALALA".
This message is not in the console: my Fallback class is not being called. Instead, I get an error stating that the requested resource was not found.
Please tell me what could be the problem? Can I make a mistake somewhere?
The thing is that now I'm trying to get my Fallback class to work. And then I want to call another Fagnet class in the Fallback class with a different URL so that it works out if my main service is unavailable.
Tell me, please. thanks
答案1
得分: 0
我不得不将这些添加到依赖项中才能使其工作(还要记得在评论中提到插入 feign.hystrix.enabled: true)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.2.10.RELEASE</version>
</dependency>
英文:
I had to add to dependencies this for it to work (also don't forget to insert feign.hystrix.enabled: true as was said in the comments)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.2.10.RELEASE</version>
</dependency>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论