Spring cloud 通过Eureka服务器设置server.contextPath与hystrix.stream的URL进行Spring引导

Spring cloud 通过Eureka服务器设置server.contextPath与hystrix.stream的URL进行Spring引导,spring-cloud,turbine,hystrix,netflix-eureka,Spring Cloud,Turbine,Hystrix,Netflix Eureka,我有运行Turbine实例的Eureka服务器和几个连接到它的发现客户端。一切正常,但如果我注册了一个设置了server.contextPath的发现客户端,则它无法被InstanceMonitor识别,Turbine stream无法组合其hystrix.stream 这是它在Eureka/Turbine服务器日志中的外观: 2015-02-12 06:56:23.265 INFO 1 --- [ Timer-0] c.n.t.discovery.InstanceObserva

我有运行Turbine实例的Eureka服务器和几个连接到它的发现客户端。一切正常,但如果我注册了一个设置了
server.contextPath
的发现客户端,则它无法被
InstanceMonitor
识别,Turbine stream无法组合其
hystrix.stream

这是它在Eureka/Turbine服务器日志中的外观:

2015-02-12 06:56:23.265  INFO 1 --- [        Timer-0] c.n.t.discovery.InstanceObservable       : Hosts up:3, hosts down: 0
2015-02-12 06:56:23.266  INFO 1 --- [        Timer-0] c.n.t.monitor.instance.InstanceMonitor   : Url for host: http://user-service:8887/hystrix.stream default
2015-02-12 06:56:23.268 ERROR 1 --- [InstanceMonitor] c.n.t.monitor.instance.InstanceMonitor   : Could not initiate connection to host, giving up: []
2015-02-12 06:56:23.269  WARN 1 --- [InstanceMonitor] c.n.t.monitor.instance.InstanceMonitor   : Stopping InstanceMonitor for: user-service default

com.netflix.turbine.monitor.instance.InstanceMonitor$MisconfiguredHostException: []
    at com.netflix.turbine.monitor.instance.InstanceMonitor.init(InstanceMonitor.java:318)
    at com.netflix.turbine.monitor.instance.InstanceMonitor.access$100(InstanceMonitor.java:103)
    at com.netflix.turbine.monitor.instance.InstanceMonitor$2.call(InstanceMonitor.java:235)
    at com.netflix.turbine.monitor.instance.InstanceMonitor$2.call(InstanceMonitor.java:229)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
它试图从
http://user-service:8887/hystrix.stream
其中包括sever.contextPath在内的正确URL应为
http://user-service:8887/uaa/hystrix.stream

该客户端的
应用程序.yml
包含:

server:
  port: 8887
  contextPath: /uaa

security:
  ignored: /css/**,/js/**,/favicon.ico,/webjars/**
  basic:
    enabled: false
我的问题是:我应该向这个用户服务发现客户端添加一些额外的配置选项来注册正确的hystrix.stream URL位置吗

我还没有深入研究这个问题,我会在得到答案之前告诉你是否发现了什么

当前解决方案 使用
server.contextPath
management.context path
时有一个问题。当两者都设置时,涡轮流将在
${HOST_URL}/${server.contextPath}/${management.context path}/hystrix.stream
上提供服务。在这种情况下,我不得不放弃使用
server.contextPath
(我在controllers
@RequestMapping
中将其替换为前缀)

现在,当您使用user
management.context path
时,您的hystrix.stream将从使用它作为前缀的URL获得服务。在这种情况下,你必须按照斯宾塞的建议去做

turbine.instanceUrlSuffix=/{PUT_YOUR_MANAGEMENT_CONTEXT_PATH_HERE}/hystrix.stream

当然,这个
管理.context path
必须为您的所有发现客户端设置相同的值-使用Spring Cloud Config可以轻松完成这一操作您可以设置
turbine.instanceUrlSuffix.=/uaa/hystrix.stream
。其中,
是在
turbine.aggregator.clusterConfig
中设置的值。工作中的所有配置选项。您不需要将端口添加到后缀,因为Spring Cloud Netflix Turbine会从eureka添加端口。

您可以设置
Turbine.instanceUrlSuffix.=/uaa/hystrix.stream
。其中,
是在
turbine.aggregator.clusterConfig
中设置的值。工作中的所有配置选项。您不需要将端口添加到后缀,因为Spring Cloud Netflix Turbine会从eureka添加端口。

您可以设置
Turbine.instanceUrlSuffix.=/uaa/hystrix.stream
。其中,
是在
turbine.aggregator.clusterConfig
中设置的值。工作中的所有配置选项。您不需要将端口添加到后缀,因为Spring Cloud Netflix Turbine会从eureka添加端口。

您可以设置
Turbine.instanceUrlSuffix.=/uaa/hystrix.stream
。其中,
是在
turbine.aggregator.clusterConfig
中设置的值。工作中的所有配置选项。您不需要在后缀中添加端口,因为Spring Cloud Netflix Turbine会添加来自eureka的端口。

嘿,Spencer,谢谢您的回答,我很快就会检查它。快速提问-它是否涵盖了这样一种情况,即我有几个正在运行的实例,每个实例都设置了不同的上下文路径?应该是,使用不同的
。嘿,Spencer,我用你的建议找到了解决我遇到的问题的方法。问题在于,如果要创建指向hystrix.stream的url,则
server.contextPath
management.context path
会混合在一起。我不得不放弃使用
server.contextPath
,我在最初的帖子中描述了它。查看更多信息。谢谢嘿,斯宾塞,谢谢你的回答,我马上要查一下。快速提问-它是否涵盖了这样一种情况,即我有几个正在运行的实例,每个实例都设置了不同的上下文路径?应该是,使用不同的
。嘿,Spencer,我用你的建议找到了解决我遇到的问题的方法。问题在于,如果要创建指向hystrix.stream的url,则
server.contextPath
management.context path
会混合在一起。我不得不放弃使用
server.contextPath
,我在最初的帖子中描述了它。查看更多信息。谢谢嘿,斯宾塞,谢谢你的回答,我马上要查一下。快速提问-它是否涵盖了这样一种情况,即我有几个正在运行的实例,每个实例都设置了不同的上下文路径?应该是,使用不同的
。嘿,Spencer,我用你的建议找到了解决我遇到的问题的方法。问题在于,如果要创建指向hystrix.stream的url,则
server.contextPath
management.context path
会混合在一起。我不得不放弃使用
server.contextPath
,我在最初的帖子中描述了它。查看更多信息。谢谢嘿,斯宾塞,谢谢你的回答,我马上要查一下。快速提问-它是否涵盖了这样一种情况,即我有几个正在运行的实例,每个实例都设置了不同的上下文路径?应该是,使用不同的
。嘿,Spencer,我用你的建议找到了解决我遇到的问题的方法。问题在于,如果要创建指向hystrix.stream的url,则
server.contextPath
management.context path
会混合在一起。我不得不放弃使用
server.contextPath
,我在最初的帖子中描述了它。查看更多信息。谢谢