- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在根据文档尝试 feignclient 回退时遇到问题。
假设 myFeignClient 无法连接到 myFeign
@FeignClient(name = "myFeign", fallback = MyFeignClientFallback.class)
public interface MyFeignClient {
@PostMapping(“/test")
Object test(@RequestParam(“param1") String param1);
}
我的后备类是这样的:
@Component
public class MyFeignClientFallback implements MyFeignClient {
public Object test(@RequestParam(“param1”) String param1) {
return “Error";
}
}
它没有调用后备方法,而是彻底失败:
2018-05-07 15:19:48.052 ERROR 41592 --- [nio-8081-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: myFeign] with root cause
com.netflix.client.ClientException: Load balancer does not have available server for client: myFeign
我已经让我的假客户端开始工作了。当我遇到这个问题时,我正在尝试使用 Hystrix 的想法。
我是否使用了这个错误或者我错过了什么?
最佳答案
请在配置文件application.yml中启用hystrix,默认为false,该功能将不起作用。
构建.gradle
buildscript {
ext {
springBootVersion = '2.0.1.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
bootJar {
launchScript ()
}
archivesBaseName = 'framework'
version = '1.0'
sourceCompatibility = 1.8
repositories {
mavenCentral()
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
compile('org.springframework.cloud:spring-cloud-starter-openfeign')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
ext {
springCloudVersion = 'Finchley.RC1'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
应用程序.yml
eureka:
client:
serviceUrl:
defaultZone: //...
instance:
preferIpAddress: true
feign:
hystrix:
enabled: true
应用程序.java
@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
FrameworkHelloService.java
package framework.root.service;
import framework.root.service.FrameworkHelloService.HelloServiceFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient(name = "framework", fallback = HelloServiceFallback.class)
public interface FrameworkHelloService {
@GetMapping("/api/hello")
public String hello();
@GetMapping("/api/exception")
public void exception();
@GetMapping("/none")
public String none();
@Component
class HelloServiceFallback implements FrameworkHelloService {
@Override
public String hello() {
return null;
}
@Override
public void exception() { }
@Override
public String none() {
return "Fallback!";
}
}
}
关于java - Spring FeignClient 回退未调用但进入异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50219164/
我想使用 @FeignClient(url=...) 并使其直接转到给定的 url,而不是从功能区配置中获取主机。 我知道在 spring-cloud 中 feign 默认与ribbon 和 eure
我正在尝试了解 Spring Boot 和 Hystrix,但无法让后备方法发挥作用。我尝试了两种方法,@HystrixCommand 和 @FeignClient。我可以获取 @HystrixCom
我正在尝试在我的 Multi-Tenancy 应用程序中实现假客户端概念。我有两个微服务。在其中一项微服务中,我编写了 API 来从数据库获取数据。我的其他微服务中需要这些数据。为此,我使用假客户端概
我的微服务需要使用双向 ssl。每个微服务都是一个 Spring Boot 应用程序,注释为: @SpringBootApplication @EnableFeignClients @EnableDi
我使用 Spring Cloud Netflix 来构建我的微服务。 @FeignClient(name = "ms-cloud",configuration = MsCloudClientConfi
是否可以通过 MockRestServiceServer(restTemplate) 模拟响应 FeignClient?这个例子不起作用: Application.class @SpringBootA
我在根据文档尝试 feignclient 回退时遇到问题。 假设 myFeignClient 无法连接到 myFeign @FeignClient(name = "myFeign", fallback
服务器使用request.getInputStream()获取请求正文。 客户端代码: @FeignClient(name="composer-agent") public interface Com
Spring Boot FeignClient 捕获业务异常信息 因项目重构采用spring cloud,feign不可避免。目前spring cloud在国内还不是很成熟,所以踩坑是免不了的。最
我在自动连接来自另一个项目的假客户端时遇到问题。似乎没有生成和注入(inject) feign 客户端的实现。 这是我遇到的错误。 org.springframework.beans.factory.
我的应用程序中有一个 @FeignClient: @FeignClient(name="${mongo.service.id}", url="${mongo.service.url}") public
我尝试使用多个查询字符串参数调用 Google API。奇怪的是,我找不到办法做到这一点。 这是我的 FeignClient : @FeignClient(name="googleMatrix", u
Feign 默认扩展器转换参数: final class ToStringExpander implements Expander { @Override public String
我 try catch 从 FeignClient 连接的另一个微服务收到的异常。我制作了自定义的 ErrorDecoder,并且 public class CustomErrorDecoder im
拥有 Feign 客户端: @FeignClient(name = "storeClient", url = "${feign.url}") public interface StoreClient
我有一个@FeignClient接口(interface): @FeignClient(name="${some.service.id}", url="${some.service.url}") pu
这是我的 FeignClient: @FeignClient(name="${mongo.service.id}", url="${mongo.service.url}", configuration
如何在spring的@feignclient配置中设置自定义最大连接池大小, @FeignClient(name = "content-cms", configuration = ContentCms
当我的 Spring Boot 应用程序初始化时,我需要使用 @Component @FeignClient(name = "xxx") 进行 bean 注入(inject),但它总是抛出这样的异常:
我在自动连接另一个项目的 feign 客户端时遇到问题。貌似没有生成和注入(inject)feign客户端的实现。 这是我遇到的错误。 org.springframework.beans.factor
我是一名优秀的程序员,十分优秀!