Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring cloud 批注@RibbonClient不能与RestTemplate一起使用_Spring Cloud_Spring Cloud Netflix - Fatal编程技术网

Spring cloud 批注@RibbonClient不能与RestTemplate一起使用

Spring cloud 批注@RibbonClient不能与RestTemplate一起使用,spring-cloud,spring-cloud-netflix,Spring Cloud,Spring Cloud Netflix,我正在尝试基于RestTemplate的Ribbon配置,但运气不佳,以下是我的代码: @SpringBootApplication @RestController @RibbonClient(name = "foo", configuration = SampleRibbonConfiguration.class) public class BookmarkServiceApplication { public static void main(String[] args) {

我正在尝试基于RestTemplate的Ribbon配置,但运气不佳,以下是我的代码:

@SpringBootApplication
@RestController
@RibbonClient(name = "foo", configuration = SampleRibbonConfiguration.class)
public class BookmarkServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(BookmarkServiceApplication.class, args);
    }

    @Autowired
    RestTemplate restTemplate;

    @RequestMapping("/hello")
    public String hello() {
        String greeting = this.restTemplate.getForObject("http://foo/hello", String.class);
        return String.format("%s, %s!", greeting);
    }
}
错误页面如下:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Mar 22 19:59:33 GMT+08:00 2016
There was an unexpected error (type=Internal Server Error, status=500).
No instances available for foo
但是如果我删除注解@RibbonClient,一切都会很好

@RibbonClient(name = "foo", configuration = SampleRibbonConfiguration.class)
下面是配置实现:

public class SampleRibbonConfiguration {

  @Autowired
  IClientConfig ribbonClientConfig;

  @Bean
  public IPing ribbonPing(IClientConfig config) {
    return new PingUrl();
  }

  @Bean
  public IRule ribbonRule(IClientConfig config) {
    return new AvailabilityFilteringRule();
  }
}
是因为RibbonClient不能与RestTemplate一起工作吗

另一个问题是,像负载平衡规则这样的功能区配置是否可以通过application.yml配置文件进行配置?
从开始,我们似乎可以在属性文件中配置功能区参数,如NFLoadBalancerClassName、NFLoadBalancerRuleClassName等,Spring Cloud是否也支持此功能?

我假设您正在使用Eureka进行服务发现

您的特定错误:

可能发生的原因有两个

1.)所有服务均已关闭 您的
foo
服务的所有实例都可以合法地关闭

解决方案:尝试访问您的Eureka仪表板,确保所有服务都已启动

如果您在本地运行,则Eureka仪表板位于

2)等待心跳 当您第一次通过Eureka注册服务时,有一段时间该服务启动但不可用。从文件中

直到 实例中,服务器和客户端都具有相同的元数据 他们的本地缓存(因此可能需要3次心跳)

解决方案:启动
foo
服务后,请等待30秒,然后再尝试通过客户端呼叫

在你的特殊情况下,我猜#2很可能就是发生在你身上的事情。您可能正在启动该服务并试图从客户端立即调用它

当它不工作时,您停止客户端,进行一些更改并重新启动。但到那时,所有心跳都已完成,您的服务现在可用


关于你的第二个问题。请参阅参考文档中的“使用属性自定义功能区客户端”部分

我假设您正在使用Eureka进行服务发现

您的特定错误:

可能发生的原因有两个

1.)所有服务均已关闭 您的
foo
服务的所有实例都可以合法地关闭

解决方案:尝试访问您的Eureka仪表板,确保所有服务都已启动

如果您在本地运行,则Eureka仪表板位于

2)等待心跳 当您第一次通过Eureka注册服务时,有一段时间该服务启动但不可用。从文件中

直到 实例中,服务器和客户端都具有相同的元数据 他们的本地缓存(因此可能需要3次心跳)

解决方案:启动
foo
服务后,请等待30秒,然后再尝试通过客户端呼叫

在你的特殊情况下,我猜#2很可能就是发生在你身上的事情。您可能正在启动该服务并试图从客户端立即调用它

当它不工作时,您停止客户端,进行一些更改并重新启动。但到那时,所有心跳都已完成,您的服务现在可用


关于你的第二个问题。请参阅参考文档中的“使用属性自定义功能区客户端”部分

似乎问题不在RibbonClient和RestTemplate中,而是在foo服务和Eureka服务器中,虽然在Eureka web portal中可以看到foo服务,但在访问它时存在问题,但是如果我直接访问foo服务,就可以了。我会做更多的检查为什么会出现问题…如果不显示完整的堆栈跟踪,我帮不了什么忙。我们有很多的
RestTemplate
和ribbon一起工作的示例。似乎问题不在RibbonClient和RestTemplate中,而是在foo服务和Eureka服务器中,虽然在Eureka web portal中可以看到foo服务,但在访问它时有问题,但是如果我直接访问foo服务,就可以了。我会做更多的检查为什么会出现问题…如果不显示完整的堆栈跟踪,我帮不了什么忙。我们有许多
restemplate
和ribbon的示例一起工作。
No instances available for foo