问题描述
:@LoadBalanced@H_301_2@是标记注释,
@RibbonClient@H_301_2@用于配置目的。
@LoadBalanced@H_301_2@
用作标记注释,指示被注释的对象RestTemplate@H_301_2@应使用
RibbonLoadBalancerClient@H_301_2@与您的服务进行交互。
反过来,这允许您对传递给的网址使用“逻辑标识符” RestTemplate@H_301_2@。这些逻辑标识符通常是服务的名称。例如:
restTemplate.getForObject("http://some-service-name/user/{id}", String.class, 1);
@H_301_2@
some-service-name@H_301_2@逻辑标识符在哪里。
@RibbonClient@H_301_2@
用于配置功能区客户端。
没有!如果您正在使用服务发现,并且对所有默认的功能区设置都没问题,那么甚至不需要使用@RibbonClient@H_301_2@注释。
至少有两种情况需要使用 @RibbonClient@H_301_2@
定义一个 @RibbonClient@H_301_2@
@RibbonClient(name = "some-service", configuration = SomeServiceConfig.class)
@H_301_2@
-
name@H_301_2@ -将其设置为与功能区调用的服务相同的名称,但需要其他自定义功能区以与功能区交互。
-
configuration@H_301_2@-将其设置为
@Configuration@H_301_2@所有定义为的类
@Beans@H_301_2@。确保 选择此类,
@ComponentScan@H_301_2@否则它将覆盖所有功能区客户端的默认设置。
请参阅Spring Cloud Netflix文档中的“自定义RibbonClient”部分(链接)
如果您未使用Service
Discovery,则注释name@H_301_2@字段
@RibbonClient@H_301_2@将用于
application.properties@H_301_2@在您传递给的URL
中的前缀以及“逻辑标识符”中为您的配置添加前缀
RestTemplate@H_301_2@。
定义一个 @RibbonClient@H_301_2@
@RibbonClient(name = "myservice")
@H_301_2@
然后在你的 application.properties@H_301_2@
myservice.ribbon.eureka.enabled=false
myservice.ribbon.listOfServers=http://localhost:5000, http://localhost:5001
@H_301_2@
解决方法
据我了解@LoadBalanced
,Rest模板应基于使用Ribbon的客户端负载平衡,并检查Eureka服务器是否将服务名称解析为主机/端口。
的用途是什么@RibbonClient
。它配置为支持不带Eureka的本机Ribbon Client LB以及配置为Eureka
Discover时是否还支持DiscoveryEnabledNIWSServerList
?