我有一个Spring Boot应用程序,它充当Eureka客户机。该应用程序需要通过REST调用另一个微服务,我希望使用Feign进行此调用。我遇到的问题是,我的应用程序试图在Eureka中查找服务名称,而它仅在我的应用程序yaml文件中定义。
我为难以理解的解释道歉,希望下面的代码片段将有助于澄清。
外国客户:
@FeignClient("foo")
@Component
public interface FooServiceProxy{
@RequestMapping(value = "/balance", method = RequestMethod.POST, produces = "application/json")
ServiceResponse execute(ServiceRequest serviceRequest);
}
在我的控制器中,谁调用这个费恩客户端,使用@AutoWired定义了foServiceProxy:
@Autowired
private FooServiceProxy fooServiceProxy;
我的yaml文件如下:
spring:
application:
name: app-name
server:
port: 8080
foo:
ribbon:
listOfServers: http://hostname:8081/balance
eureka:
client:
fetchRegistry: false
serviceUrl:
defaultZone: http://eurekasrver:8761/eureka/
我的问题是,在运行时,抛出以下错误:java.lang.运行时异常:com.netflix.client.客户端异常:负载均衡器没有可用的服务器为客户端: foo
有趣的是,如果我从应用程序中删除@enableurekaclient注释,一切都会正常工作。我相信我理解这个问题,因为应用程序是Eureka客户机,所以我没有在yaml文件中查找服务器上的foo,而是直接到Eureka查找服务器ip,然后由于找不到任何ip而失败。尽管我似乎理解这个问题,但我一直无法在网上找到解决方案,也无法自己想出一个解决方案。
任何帮助将不胜感激。谢谢你!
关于这个问题,您应该考虑到,当eureka在您的类路径上时,所有功能区配置都由eureka收费,因此它将使用eureka服务器的列表。
Spring Cloud使用@RibbonClient配置ribbon使用的类型,如服务器列表。如果类路径上有eureka,默认情况下它使用eureka服务器列表(因此需要使用标志来禁用eureka)。spencergibb评论https://github.com/spring-cloud/spring-cloud-netflix/issues/564
您可以通过添加NIWSServerListClassName配置来尝试:
`someservice.ribbon:
NIWSServerListClassName:com.netflix.loadbalancer.ConfigurationBasedServerList
listOfServers: server1:80`
或者试试本期提出的解决方案https://github.com/spring-cloud/spring-cloud-netflix/issues/564
条款 13:优先考虑const_iterator而非iterator STL const_iterator等价于指向常量的指针。它们都指向不能被修改的值。标准实践是能加上const就加上,这也指示我们对待const_iterator应该如出一辙。 上面的说法对C++11和C++98都是正确的,但是在C++98中,标准库对const_iterator的支持不是很完整。首先不容易创建它们,其次就算你有
我现在是这样做的: > 我有一个在后台运行并读取用户位置的服务。每次读取一个有效的位置(有一些参数,如距离和时间),一个IntentService开始将该位置发送到网络服务器 使用追踪服务的应用程序也有一些网络通话,具体取决于用户按下的选项。现在,应用程序只是在异步任务中调用web服务。 一些代码:位置服务会在每次收到好位置时启动IntentService,如下所示: intentservice处
条款八:优先考虑nullptr而非0和NULL 你看这样对不对:字面值0是一个int不是指针。 如果C++发现在当前上下文只能使用指针,它会很不情愿的把0解释为指针,但是那是最后的退路。 一般来说C++的解析策略是把0看做int而不是指针。 实际上,NULL也是这样的。但在NULL的实现细节有些不确定因素, 因为实现被允许给NULL一个除了int之外的整型类型(比如long)。 这不常见,但也算不
条款九:优先考虑别名声明而非typedefs 我相信每个人都同意使用STL容器是个好主意,并且我希望Item18能说服你让你觉得使用std:unique_ptr也是个好主意,但我猜没有人喜欢写上几次 std::unique_ptr<std::unordered_map<std::string,std::string>>这样的类型,它可能会让你患上腕管综合征的风险大大增加。 避免上述医疗悲剧也很简单
C# 语言对不同控制结构都不乏支持: for , while , do/while 和 foreach ,所有都是语言的一部分。从过去的计算机语言设计来看,很难不让人怀疑语言的设计者不是错过某些惊奇的循环结构。实际上,总是存在一个更好的方法:查询语法(query syntax)。 查询语法可以让你的程序逻辑从必要模式(imperative model)变为声明模式(declarative mode
我正在使用for。对于这个我正在使用,https://github.com/vyuldashev/laravel-queue-rabbitmq. 对于正常队列和消费者,一切都很好。为了区分消息的优先级,我定义了多个队列,在队列名中使用0-3作为后缀。我通过手动计算作业总数,将作业路由到不同的队列。 使用这种方法,对于不同的任务,我需要创建更多具有名称优先级的队列。创建队列名称中包含 0-3 的队列