我已经使用spring-cloud构建了一个Spring Boot应用程序,并希望在我的客户机应用程序(也是一个微服务)中使用RestTemplate,这样我就可以继续使用mockMvc进行集成测试。我使用默认的ribbon/eureka/hystrix客户端设置,我的客户端微服务和eureka客户端在我调用的服务中。这是有效的(一旦我发现serviceIds是在restTemplate中标识服务endpoint的东西)。我的问题是,我似乎无法将restTemplate读取或连接超时从默认的300ms更改。
电话详情:
`@Configuration
@EnableAutoConfiguration
@ComponentScan
@EnableConfigurationProperties
@EnableHystrix
@EnableEurekaClient
public class Application { ... public static void main(String[] args) {} ... }
@Component
class EricComponentToDoHystrix { // apparently this has to be a component for hystrix to work btw
@Autowired
RestTemplate restTemplate;
..
@HystrixCommand(fallbackMethod="defaultRestTemplateCall")
public void doRestTemplateCall()
ResponseEntity<String> result = restTemplate.getForEntity("http://someservice/doSomething", String.class); // actually make a call
..
}
}`
使用Application.Properties包含:
spring:
cloud:
client:
serviceIds:
- someservice
someservice:
ribbon:
#listOfServers: localhost:7080
#NIWSServerListClassName: com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
# the eureka vipAddress of the target service (Disabled)
DeploymentContextBasedVipAddresses: someservice
# Interval to refresh the server list from the source
ServerListRefreshInterval: 1000
# Connect timeout used by Apache HttpClient.. apparently not by restTemplate
ConnectTimeout: 30000
# Read timeout used by Apache HttpClient.. apparently not by restTemplate
ReadTimeout: 30000
eureka:
client:
#Region where eureka is deployed -For AWS specify one of the AWS regions, for other datacenters specify a arbitrary string
#indicating the region.This is normally specified as a -D option (eg) -Deureka.region=us-east-1
region: default
#For eureka clients running in eureka server, it needs to connect to servers in other zones
preferSameZone: false
us-east-1:
availabilityZones: default
instance:
#Virtual host name by which the clients identifies this service
virtualHostName: ${spring.application.name}
appGroupName: ericGroup
# disable Ribbon's cicruit breaker and rely soley on Hystrix.
# this helps to avoid confusion.
# see https://github.com/Netflix/ribbon/issues/15
niws:
loadbalancer:
availabilityFilteringRule:
filterCircuitTripped: false
有人知道我需要设置哪些属性来修改RESTTemplate的默认超时吗?关于这个主题的文档很少,而且最近的代码甚至允许restTemplate用于Ribbon/Eureka Spring Boot默认值。也许这还没有建成。
您正在注入的resttemplate
完全是普通的,除了ribboninterceptor
,它为您选择URI中的物理主机(请参见https://github.com/spring-cloud/spring-cloud-netflix/blob/master/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/ribbonautocomfiguration.java)。超时和其他属性通过ClienthtPrequest
在RestTemplate
中控制。您可能只需将RibbonInterceptor
插入到自己的RESTTemplate
中,并设置ClienthtPrequestFactory
来执行超时操作,例如。
@Component
class EricComponentToDoHystrix {
private RestTemplate restTemplate;
@Autowired
public EricComponentToDoHystrix(RibbonInterceptor interceptor) {
restTemplate = new RestTemplate();
restTemplate.setInterceptors(Arrays.asList(interceptor));
restTemplate.setRequestFactory(...);
}
}
introduction 在上一篇中阐述了ribbon的基本用法,但是可以发现服务列表是通过配置得来的,实际 情况通常是由负载均衡+服务发现来实现的,通过服务发现获取服务列表,负载均衡通过rule选择要调用的服务。服务发现可以通过eureka来实现,后期会讲解利用consul做服务发现。 eureka discovery service eureka服务发现在前面的文章中已经提供到,这里直接给出代
我正在使用Tomcat JDBC连接池和MariaDB JDBC驱动程序在Cloud Foundry上运行的Spring Boot/Spring Cloud Connectors项目中设置数据源,如下所示: 出于某种原因,DataSource bean只接收引用池大小和maxWait的属性,而不接收connectionProperties-请参见日志输出: 注意:试图通过Spring的Connec
我成功地使用Eureka让我的RestTemplate客户端发现远程服务,并使用Ribbon将调用转发给它,如文档中所述。基本上,只需为我的应用程序类添加以下注释,然后让Spring Boot的魔力完成其余部分: (注:您注意到我使用的是spring云:1.0.0-SNAPSHOT-BUILD,而不是1.0.0.M3-但这似乎不会影响我的问题)。 当两个服务实例启动时,rest模板客户端成功地在两
我有一个API返回一个json,它是GET方法类型的。因为它是GET,所以当我在浏览器中打开URL时,它可以正常工作并呈现json,但是,当使用RestTemplate检索json时,它失败了。 能否请您提供一种阅读以下API的方法。 API URL:https://www.nseindia.com/API/option-chain-indexs?symbol=nifty Spring BootR
当使用包含Ribbon客户端的Hystrix命令时,您需要确保您的Hystrix超时配置为长于配置的Ribbon超时,包括可能进行的任何潜在的重试。例如,如果您的Ribbon连接超时为一秒钟,并且Ribbon客户端可能会重试该请求三次,那么您的Hystrix超时应该略超过三秒钟。 如何包含Hystrix仪表板 要在项目中包含Hystrix仪表板,请使用组org.springframework.cl
问题内容: 在jersey 1中,我们在类中具有一个函数setConnectTimeout。 在球衣2中,缺少此功能的地方使用该类。 如何在jersey 2.x中设置连接超时并读取超时? 问题答案: 下面的代码在Jersey 2.3.1中对我有用(灵感在这里找到:https :