gpt4 book ai didi

java - 通过启用功能区的客户端调用微服务时失败(没有 eureka 服务发现)

转载 作者:行者123 更新时间:2023-12-02 11:37:01 25 4
gpt4 key购买 nike

我试图通过启用功能区的客户端(ribbon-client)调用“微服务”(微服务生产者),但它给了我一个错误。

java.lang.IllegalStateException: No instances available for employee-microservice

我正在关注客户端负载平衡的官方 spring.io 链接( https://spring.io/guides/gs/client-side-load-balancing/ ),并且我也遵循此链接中给出的所有规范。你可以在我的GitHub地址看到代码: (https://github.com/vickygupta0017/microservice-ribbon)。

我不确定我错过了什么或做错了什么,有人可以帮助我吗?

最佳答案

如果 eureka 服务器不用于识别服务器是否可达,ribbon 客户端将使用“RibbonConfiguration”- pingUrl 参数。默认情况下,它是空字符串,这意味着它将在没有任何上下文的情况下 ping 服务器列表,以获取服务器是否可访问的答案。所以在这里你可以做两件事。

  1. 创建一个绑定(bind)到服务器“/”根上下文的服务并发送肯定响应。

    @RequestMapping(value = "/")
    public String status(HttpServletRequest request) {
    return "";
    }
  2. 或者更新功能区客户端配置 (EmployeeConfiguration) 并返回带有相关“服务名称”的 PingUrl。

    @Bean
    public IPing ribbonPing(IClientConfig config) {
    return new PingUrl(false,"/employees");
    }

选择第一个,因为它将解决查看服务器是否可达的基本目的。

引用号:https://spring.io/guides/gs/client-side-load-balancing/

Our IPing is a PingUrl, which will ping a URL to check the status of each server. Say Hello has, as you’ll recall, a method mapped to the / path; that means that Ribbon will get an HTTP 200 response when it pings a running Say Hello server. The IRule we set up, the AvailabilityFilteringRule, will use Ribbon’s built-in circuit breaker functionality to filter out any servers in an “open-circuit” state: if a ping fails to connect to a given server, or if it gets a read failure for the server, Ribbon will consider that server “dead” until it begins to respond normally.

关于java - 通过启用功能区的客户端调用微服务时失败(没有 eureka 服务发现),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48863771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com