当前位置: 首页 > 知识库问答 >
问题:

Spring FaignClient fallback未调用,但出现异常

赏彭薄
2023-03-14

我在尝试基于留档的假客户后备时遇到了问题。

假设myFeygnClient无法连接到myFeygnClient

@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错误41592---[nio-8081-exec-6]o.a.c.c.c.[/]。[dispatcherServlet]:Servlet。路径为[]的上下文中servlet[dispatcherServlet]的service()引发了异常[Request processing failed;nested exception is java.lang.RuntimeException:com.netflix.client.ClientException:Load balancer没有可用于客户端的服务器:myFeign],根本原因是

通用域名格式。netflix。客户客户端异常:负载平衡器没有可用于客户端的服务器:myFeign

我已经让我的假客户工作了。当我遇到这个问题时,我正在尝试使用Hystrix的想法。

我是不是用错了,还是漏掉了什么?

共有1个答案

徐瑞
2023-03-14

请在配置文件应用程序中启用hystrix。yml,默认值为false,该函数将不工作。

建筑格拉德尔

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

一个pplication.java

@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

框架你好ervice.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!";
        }
    }
}
 类似资料:
  • 这是我的客户端代码 这是我的Rest控制器代码: 如果我在调用后使用 String.class 作为返回类型,则相同的代码也有效。但不是响应实体类。我做错了什么,如果我需要客户端也相同的响应实体

  • 已完成未来() 返回已使用给定值完成的。 我们如何构造一个已经异常完成的< code>CompletableFuture? 也就是说,我希望future抛出一个异常,而不是返回值。

  • 我正在写一个代码,它将在ec2中运行,并在s3中为我的帐户列出桶。代码运行良好。然而,当我试图将x射线检测到其中时,x射线痕迹不会出现。我已将x射线依赖项包含在pom.xml 我尝试了很多方法,比如引入配置,但都没用。 有人有一个样本代码将是有益的,因为没有太多的资源,关于它和AWS的官方样本项目不是很清楚。 获取以下异常 2019-04-27 10:46:28.706错误3865---[pool

  • 我是摩基托的新手,不明白这是什么问题。而且你能不能说我,如何做Mockito单位正确,因为我真的不能理解他们!更新的错误和测试类 我有下一个例外: 下面是我的DAO类:

  • 但是,该方法(authContext.AcquireTokenAsync)与其他参数(如客户端id等)很好地配合使用,如下所示。result=await authContext.AcquireTokenSilentAsync(ResourceId,clientId); UWP是否对具有ClientCredential(clientid,key)的AuthContext.AcquireTokenSi

  • 我创建了一个自定义验证规则来检查数据库中是否存在用户名。 My User类有一个用户名,该用户名具有自定义验证规则,当创建对象时,它会在数据库中检查是否存在相同的用户名。 我使用<code>界面UserRepository扩展JpaRepositor 我可以分别验证用户并将他们保存到数据库中,但是在一起使用时,比如调用< code > user repository . save(user); <